我正在使用stdlib生成隨機數。我知道有更好的發生器,但stdlib對我來說已經足夠了。獨立於時間在C中播種rand()
我做:
while(condition){
sleep(1);
srand(time(NULL));
r=rand();
}
這是一個循環中,所以我需要sleep(1)
或種子是相同的,重複的數量。事實是,我需要生成數千甚至數百萬的數字,如果每個數字等待1秒鐘,則需要很長時間。 因此,還有另外一種獨立於種子的方式嗎?
我正在使用stdlib生成隨機數。我知道有更好的發生器,但stdlib對我來說已經足夠了。獨立於時間在C中播種rand()
我做:
while(condition){
sleep(1);
srand(time(NULL));
r=rand();
}
這是一個循環中,所以我需要sleep(1)
或種子是相同的,重複的數量。事實是,我需要生成數千甚至數百萬的數字,如果每個數字等待1秒鐘,則需要很長時間。 因此,還有另外一種獨立於種子的方式嗎?
您只需要種子一次(在啓動時),然後根據您的喜好生成儘可能多的數字。不要爲每個數字補種一次 - 這是毫無意義的,而且你基本上必須產生隨機種子來產生隨機數(這首先違背了使用PRNG的目的)。
謝謝。就是這樣 – Rafael
在某些系統上,您可以從其他隨機源(例如啓動時)啓動PRNG。來自[random(4)](http://man7.org/linux/man-pages/man4/random.4.html) –
您只需要種子PRNG一次。 – juanchopanza