首頁 > 後端開發 > Golang > 主體

為什麼 Go 中的 rand.Intn() 每次都會產生相同的數字?

Susan Sarandon
發布: 2024-10-30 13:25:02
原創
540 人瀏覽過

Why Does `rand.Intn()` in Go Generate the Same Number Every Time?

理解Go 的rand.Intn() 中相同的隨機數產生

為什麼rand.Intn() 總是產生相同的隨機數?對於使用Go 的初學者來說,由於以下程式碼,經常會出現這個問題:

<code class="go">package main

import (
    "fmt"
    "math/rand"
)

func main() {
    fmt.Println(rand.Intn(10)) 
}</code>
登入後複製

儘管文件聲稱提供[0, n) 範圍內的偽隨機數,但程式每次都會列印相同的數字

播種隨機數產生

關鍵在於正確播種隨機數產生器。預設行為是使用確定性種子,從而在程式執行過程中產生相同的數字序列。要修正這個問題:

<code class="go">rand.Seed(time.Now().UnixNano())</code>
登入後複製

此函數使用基於當前 Unix 時間戳記的種子初始化隨機數產生器。它確保每次運行都有不同的數字序列。

理解文件

rand.Intn() 的文件指出:「頂級函數......每次執行程式時都會產生確定性的值序列。

結論

透過在使用rand.Intn 之前播種隨機數產生器(),您可以克服重複隨機數的問題,確保正確產生非確定性序列。

以上是為什麼 Go 中的 rand.Intn() 每次都會產生相同的數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!