」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼我的隨機數在循環內是一致的?

為什麼我的隨機數在循環內是一致的?

發佈於2024-12-23
瀏覽:262

Why are my random numbers consistent within a loop?

理解迭代中一致的隨機數

在提供的程式碼片段中,可以觀察到循環迭代中產生的隨機數保持一致。具體來說,儘管循環旨在產生唯一值,但「carSetter」和「decider」變數在 15 次迭代中保留相同的值。

此行為是由於循環內放置了 srand(time(0)) 造成的。它決定後續呼叫 rand() 時傳回的偽隨機數序列。問題在於 time(0) 在循環執行期間通常會傳回相同的值,這導致產生一系列一致的隨機數。

為了修正這個問題並確保真正的隨機性,它將最初對 srand(time(0)) 的呼叫移到循環之外至關重要。透過這樣做,您只需初始化隨機數產生器一次,即可確保隨機數序列在迭代中顯著變化。以下程式碼示範了此修復:

srand(time(0)); // Called once at the program's start

for (int i = 0; i 

此修改允許循環按預期在每次迭代中產生不同的隨機數。請注意,無需在循環內呼叫 srand(),因為偽隨機數產生器將繼續產生唯一值,直到您透過再次呼叫 srand() 明確重置它。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3