cでPCG乱数ジェネレータを実装しようとしています。私が初心者であるので、例の周りを頭で囲むのは難しいことです。これまでは、hereという最小限のバージョンを実装しようとしました。ここでc:PCGインプリメンテーションを使用して乱数を生成する
は現在、いくつかの(たぶん)擬似乱数を生成し、私のコードです:
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <time.h>
#include <string.h>
#include <math.h>
#include "pcg_basic.h"
int main(int argc, char** argv){
pcg32_random_t rngptr;
pcg32_srandom_r(&rngptr, time(NULL), (intptr_t)&rngptr);
for (int round = 1; round <= 10; ++round) {
printf(" %f\n", ldexp(pcg32_random_r(&rngptr) ,-32));
}
return 0;
}
があっても良い実装であるか、これをよりよく改善することができますか?
問題:main()
の機能だけでなく、コード内のどこでも乱数を使用したいと思います。これどうやってするの?私は試みました:
double myrand(){
pcg32_random_t rngptr;
pcg32_srandom_r(&rngptr, time(NULL), (intptr_t)&rngptr);
return ldexp(pcg32_random_r(&rngptr) ,-32);
}
しかし、このアプローチはうまくいかず、私には間違っています。しかし私はそれをより良くする方法を知らない。
誰かが、コードのあらゆる部分でうまくいく、Cで正しい疑似乱数を得るための簡単な方法を教えてもらえますか?これらの行を見て、あなたが使用して実装を知らなくても
初期化フラグが必要です。それ以外の場合は、同じ番号を何度も何度も繰り返します。 –
PCGの*実装*が表示されません。**は**を使用しています。 –
"*誰か私にc *" < - ここであなたは "良い"を定義する必要があります良い擬似乱数を得るための簡単なアプローチを表示してください。ほとんどの標準的なC実装の 'rand()'は、少なくともゲームでは「十分」です。 –