3 回答

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
srand(time(NULL))應(yīng)該只運(yùn)行一次以初始化PRNG。當(dāng)應(yīng)用程序啟動時(shí),在Main中執(zhí)行此操作。
說明:
PRNG(偽隨機(jī)數(shù)生成器)根據(jù)所使用的算法生成確定性的數(shù)字序列。給定的算法將始終從給定的起點(diǎn)(種子)產(chǎn)生相同的序列。如果您未明確為PRNG設(shè)置種子,那么通常每次運(yùn)行應(yīng)用程序時(shí),PRNG將從相同的默認(rèn)種子開始,從而導(dǎo)致使用相同的數(shù)字序列。
要解決此問題,您需要在每次運(yùn)行應(yīng)用程序時(shí)為PRNG自己添加不同的種子(以提供不同的序列)。通常的方法是使用time(NULL)根據(jù)當(dāng)前時(shí)間設(shè)置種子。只要您不彼此之間在一秒鐘內(nèi)啟動應(yīng)用程序的兩個(gè)實(shí)例,就可以保證使用不同的隨機(jī)序列。
每次需要新的隨機(jī)數(shù)時(shí),都無需為序列設(shè)定種子。我不確定這一點(diǎn),但是我有一種感覺,根據(jù)所使用的PRNG算法,對每個(gè)新數(shù)字進(jìn)行重新播種實(shí)際上可能會導(dǎo)致結(jié)果序列中的隨機(jī)性降低。

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
不要每次僅在程序開始時(shí)就對其進(jìn)行播種。
另外,許多書籍建議不要使用C-lib標(biāo)準(zhǔn)隨機(jī)函數(shù)。如果您需要良好的偽隨機(jī)數(shù),請?jiān)赑ress等人的《數(shù)字食譜》第三版中找到一個(gè)好的算法。版。
- 3 回答
- 0 關(guān)注
- 1305 瀏覽
添加回答
舉報(bào)