もう一度お邪魔して申し訳ありませんが、私は新しい C++ であるため、奇妙でばかげた問題がたくさんあります。
MCMC メソッドをプログラミングしています。このフォーラムで、WELL RNGが乱数を生成するための優れた代替手段であると読んだので、それを機能させようとしています。だからここに質問があります:
C++ プロジェクト内の "Well44497a.c" をさらに変更せずにコンパイルしています。コンパイルした。そうですか、それとも何か変更を加える必要がありますか?
コード内で次のスキームを使用していますが、3 RN のサイクルを生成しているだけです
解決済み: InitWELLRNG44497a(state) を関数の外に配置する必要があるという問題がありました。サンプルを生成するたびに、ジェネレーターを再起動していました。実行全体で、ジェネレーターを一度だけ初期化する必要があります。
int* sampler(PARAMETERS) { //this function returns a sample
int k;
unsigned int state[1391];
for (k = 0; k < 1391; ++k)
{
state[k] = k;
}
InitWELLRNG44497a(state); //THIS SHOULD GO ON THE CALLER FUNCTION NOT HERE
double value_first = valuate(first_state); // this function valuates one of two possible states
double value_second = valuate(second_state);
double rand_number = WELLRNG44497a()
if(rand_number > value_first / (value_first + value_second))
return second_state;
else
return first_state;
}