首頁  >  文章  >  後端開發  >  為什麼我的隨機數在循環內是一致的?

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

Linda Hamilton
Linda Hamilton原創
2024-11-04 15:03:19361瀏覽

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 < 15; i++) {
    carSetter = rand() % 3 + 1;
    decider = rand() % 2 + 1;
    // ... Rest of the code within the loop
}

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

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

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