首頁 > 後端開發 > Golang > 為什麼 Go 的 rand.Intn 似乎總是回傳相同的數字?

為什麼 Go 的 rand.Intn 似乎總是回傳相同的數字?

Barbara Streisand
發布: 2025-01-01 07:28:11
原創
608 人瀏覽過

Why Does Go's `rand.Intn` Seem to Always Return the Same Number?

為什麼 Go 的 rand.Intn 每次執行都會回傳相同的數字?

Go 標準函式庫包含一個用於產生隨機數的 rand 套件數字。但是,使用者可能會遇到一個問題,即產生指定範圍內的隨機整數的函數 rand.Intn 始終傳回相同的值。此行為可歸因於兩個關鍵因素:

  1. 未初始化的預設來源:
    rand 套件使用全域來源來產生隨機數。預設情況下,該來源未初始化,從而導致生成確定性序列。若要解決此問題,您必須使用 rand.Seed 函數初始化預設來源。例如:

    rand.Seed(time.Now().UnixNano())
    登入後複製
  2. Go Playground 快取:
    在 Go Playground 上執行程式碼範例時,輸出會被快取。這種快取可以掩蓋 rand.Intn 的真正隨機性。若要避免此問題,請確保在本機電腦上執行程式碼或使用不快取輸出的工具,例如 go run。

以上是為什麼 Go 的 rand.Intn 似乎總是回傳相同的數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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