1

我认为这个问题的答案很简单,但目前它似乎完全是在暗示我。

我正在使用 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);

只是为了得到这个测试和工作。

我想知道是否有人以前遇到过这个问题。

或者知道我做错了什么。

4

1 回答 1

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

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

我已经通过修改 mtrand 测试程序以在 5 次输出后重置来对此进行了测试,结果很清楚。

于 2011-05-01T11:32:19.207 回答