首頁 > 後端開發 > Golang > 為什麼 Go 的 rand.Intn 有時會產生相同的值?

為什麼 Go 的 rand.Intn 有時會產生相同的值?

Susan Sarandon
發布: 2024-12-16 08:20:16
原創
301 人瀏覽過

Why Does Go's `rand.Intn` Sometimes Generate the Same Value?

對rand.Intn 產生相同值進行故障排除

連結中提供的Go 範例確實為rand.Intn(10) 傳回相同的值除非修改以初始化隨機數產生器。這裡解釋一下:

  1. 未初始化的隨機數來源:

    • rand.Intn 和rand 套件中的其他函數使用全域Source產生隨機數。
    • 預設情況下,此 Source 未初始化,導致確定性序列。
    • 要初始化 Source,請使用 rand.Seed(time.Now().UnixNano())。
  2. Go Playground快取:

    • Go Playground,範例為運行時,經常快取結果以提高效能。
    • 此快取可能會影響隨機數產生的輸出,使其顯得具有確定性。

解決這些問題並一致地取得隨機數,請考慮以下步驟:

  1. 使用初始化隨機數產生器rand.Seed(time .Now().UnixNano()).
  2. 如果在Go Playground上運行範例,請在運行前清除輸出以避免快取。

透過以下操作透過這些步驟,您可以有效地使用 rand.Intn 產生隨機數,並避免重複接收相同的值。

以上是為什麼 Go 的 rand.Intn 有時會產生相同的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板