Извините, что беспокою снова, но, поскольку я новый C ++, у меня много странных и глупых проблем.
Я программирую метод MCMC. Я читал на этом форуме, что WELL RNG была хорошей альтернативой для генерации случайных чисел, поэтому я пытаюсь заставить его работать. Так что вот вопросы:
Я компилирую "Well44497a.c" в моем проекте c ++ без дальнейших изменений. Это скомпилировано. Это правильно или я должен внести какие-либо изменения?
Я использую следующую схему внутри моего кода, но она просто генерирует цикл из 3 RN
решено: проблема заключалась в том, что InitWELLRNG44497a (состояние) должен располагаться вне функции. Я перезапускал генератор каждый раз, когда генерировал образец. Для всего запуска генератор должен быть инициализирован только один раз.
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;
}