首頁 >後端開發 >C++ >為什麼隨機數在循環迭代中重複?

為什麼隨機數在循環迭代中重複?

Patricia Arquette
Patricia Arquette原創
2024-11-05 01:00:02876瀏覽

Why are Random Numbers Repeating in Loop Iterations?

循環迭代中的隨機數重複

考慮以下問題:在運行15 次迭代的循環中,dh.setDoors() 方法被稱為。在 setDoors() 中,呼叫 srand(time(0)) 來設定隨機數產生的種子。隨後,使用 carSetter = rand()%3 1 或 Decisionr = rand()%2 1 等表達式產生隨機數。

監視 carSetter 和 Decisionr 的值表示它們在每次循環迭代中保持不變,但在不同的循環運行之間進行更改。此行為是意外的,因為循環涉及 15 次獨立迭代,表明每個隨機值應該有所不同。

調查原因

問題源自於 srand( 的放置time(0)) 在每次迭代開始時。透過在每次循環中重置種子,偽隨機數序列由迭代中的常數 time(0) 值有效地固定。由於 time(0) 在整個循環中保持不變,因此會產生相同的隨機數序列。

解決問題

要解決此問題,建議:僅在程式開始時而不是在每次循環迭代中初始化隨機數產生器一次。這確保了每次循環迭代使用不同的隨機數序列。

修改後的實現將類似於以下內容:

透過此修改,x 和 y 的值將在循環迭代,產生不同隨機數序列的所需行為。

以上是為什麼隨機數在循環迭代中重複?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn