首頁  >  文章  >  後端開發  >  為什麼我的 Go 程式碼不斷產生相同的隨機數?

為什麼我的 Go 程式碼不斷產生相同的隨機數?

Linda Hamilton
Linda Hamilton原創
2024-10-26 12:43:29672瀏覽

Why Does My Go Code Keep Generating the Same Random Number?

解Go 中的重複隨機數產生問題

Go 中,rand.Intn(n int) int 函數傳回一個偽隨機整數在[0, n) 範圍內。但是,您遇到了一個問題,即它始終列印相同的數字。

文件建議 rand.Intn 使用預設 Source,它會產生確定性的值序列。要自訂行為並確保隨機性,您必須正確播種隨機數產生。

要為隨機數產生器播種,請呼叫 rand.Seed(seed int64) 函式。此函數使用種子值初始化預設 Source。常見的做法是使用目前的 Unix 時間戳記:

<code class="go">rand.Seed(time.Now().UnixNano())</code>

透過為生成器播種,您可以確保程式的每次運行都會產生不同的隨機數。

如果 rand.Seed()不被調用,生成器的行為就好像以 1 為種子,導致觀察到的重複。

以上是為什麼我的 Go 程式碼不斷產生相同的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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