Сбросить Мерсенн Твистер - PullRequest
1 голос
/ 01 мая 2011

Я предположил, что ответ на этот вопрос прост, но в данный момент он, кажется, полностью намекает на меня.

Я использую Mersenne Twister (реализация здесь http://www.bedaux.net/mtrand/) для генерации случайных чисел.

Мне нужно, чтобы он мог генерировать одну и ту же последовательность «случайных» чисел дважды, сразу после друг друга в одной и той же программе. Я использую тот же void seed (const unsigned long *, int size); Функция с тем же набором значений в надежде, что это перезагрузит генератор и позволит мне снова генерировать те же значения. В частности:

unsigned long init[4] = {0x123, 0x234, 0x345, 0x456}, length = 4;
irand.seed(init, length);

Просто чтобы проверить это и работать.

Мне было интересно, была ли у кого-то эта проблема раньше.

Или знает, что я делаю неправильно.

1 Ответ

0 голосов
/ 01 мая 2011
unsigned long init[4] = {0x123, 0x234, 0x345, 0x456};
int length = 4; 
MTRand_int32 irand(init, length);

irand.seed(init, length); // this resets

Я проверил это, изменив программу тестирования mtrand для сброса после 5 номеров вывода, и результаты были ясны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...