了解迭代中一致的隨機數
在提供的程式碼片段中,可以觀察到循環迭代中產生的隨機數保持一致。具體來說,儘管循環旨在產生唯一值,但「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中文網其他相關文章!