2011-05-01 52 views
1

我認爲這個答案很簡單,但目前它似乎完全暗指我。重置Mersenne Twister

我使用Mersenne Twister(在這裏執行http://www.bedaux.net/mtrand/)生成隨機數。

我需要它能夠在同一個程序中直接產生相同序列的「隨機」數字兩次。我使用相同的無效種子(const unsigned long *,int size);函數具有相同的值集合,希望這將重置生成器並允許我再次生成相同的值。 具體做法是:

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

只是爲了得到這個測試工作。

我想知道是否有人有過這個問題。

或知道我在做什麼錯。

回答

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個輸出數並且結果清晰。

+0

嗨,奇怪的是種子沒有重置它的問題。我認爲它會但不會。 – ceorron 2011-05-01 12:07:38