首頁 >後端開發 >Golang >## 為什麼我的 Go 程式碼每次都會產生相同的隨機數?

## 為什麼我的 Go 程式碼每次都會產生相同的隨機數?

Patricia Arquette
Patricia Arquette原創
2024-10-26 05:01:30647瀏覽

## Why Does My Go Code Generate the Same Random Number Every Time?

理解Go 中的隨機數產生

在Go 中, rand.Intn(n int) int 函數產生一個非負偽-來自預設共享來源的[0, n) 範圍內的隨機數。但是,用戶可能會遇到此函數似乎每次運行都會產生相同隨機數的情況。如果預設來源未正確播種,則可能會發生這種情況。

預設行為與播種

rand 套件的文件指出,如果 rand.Seed() 不是明確呼叫時,預設 Source 的種子值為 1。這意味著隨機數產生器的行為是確定性的,並且每次運行都會產生相同的值序列。

正確的種子播種以實現真正的隨機性

為了確保真正的隨機性,建議使用隨機種子值來呼叫 rand.Seed() 。常見的方法是使用目前的Unix 時間戳,如下例所示:

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

透過使用不斷變化的值(例如Unix 時間戳)來呼叫rand.Seed(),預設Source 是每次運行都初始化為不同的確定性狀態。這會產生真正的隨機數。

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

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