0
我試圖尋找關於如何使用mt19937ar.c變種梅森難題的例子,但大多數想出在C++和others seem to use mtwist.h
。梅森倍捻機(mt19937ar.c)沒有返回隨機數
我下面的代碼:
int getRandomNum(void)
{
int i;
i = (int) genrand_int32();
return i;
}
int main(int argc, char **argv)
{
...
int m = getRandomNum();
printf("m = %d", m);
...
return 0;
}
只是一遍又一遍吐出相同的整數。看起來像一個播種問題,但我發現每個實現獲得一個隨機數mt19937
只是簡單地調用genrand_int32()
。我做錯了嗎?
謝謝!這有幫助。 – 8protons
你的第一句話並不是真的有效,如果沒有明確給出種子,它可能會播種rng。沒有魔法是必需的...... – Apollys
@Apollys正如我在回答中所解釋的,OP所使用的實現默認爲5489的種子。它是一個非常舊的可移植實現,所以它不能使用'time()'之類的函數。 (它們不在所有平臺上存在!) – duskwuff