解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中文網其他相關文章!