2014-12-21 20 views
3

我正在使用stdlib生成隨機數。我知道有更好的發生器,但stdlib對我來說已經足夠了。獨立於時間在C中播種rand()

我做:

while(condition){ 
    sleep(1); 
    srand(time(NULL)); 
    r=rand(); 
} 

這是一個循環中,所以我需要sleep(1)或種子是相同的,重複的數量。事實是,我需要生成數千甚至數百萬的數字,如果每個數字等待1秒鐘,則需要很長時間。 因此,還有另外一種獨立於種子的方式嗎?

+3

您只需要種子PRNG一次。 – juanchopanza

回答

10

您只需要種子一次(在啓動時),然後根據您的喜好生成儘可能多的數字。不要爲每個數字補種一次 - 這是毫無意義的,而且你基本上必須產生隨機種子來產生隨機數(這首先違背了使用PRNG的目的)。

+0

謝謝。就是這樣 – Rafael

+1

在某些系統上,您可以從其他隨機源(例如啓動時)啓動PRNG。來自[random(4)](http://man7.org/linux/man-pages/man4/random.4.html) –