在 Golang 中避免產生重複隨機數的方法:建立一個新的隨機數產生器 rand.New(rand.Source)。使用 rand.NewSource(time.Now().UnixNano()) 作為熵源。使用 rand.Intn(n) 產生隨機整數。
如何避免在 Golang 中產生重複的隨機數?
在 Golang 中,產生隨機數字需要使用 math/rand
套件。使用 rand.Intn(n)
函數可以產生一個在 [0, n-1] 範圍內的隨機整數,其中 n
是正整數。但是,rand.Intn(n)
在並發環境下可能會產生重複的隨機數。
要解決這個問題,可以使用rand.New(rand.Source)
函式建立一個新的隨機數產生器,並使用io.Reader
作為熵源。在大多數情況下,使用 rand.NewSource(time.Now().UnixNano())
作為熵源即可。
以下是一個範例程式碼,展示如何使用rand.NewSource
避免產生重複的隨機數字:
package main import ( "math/rand" "time" ) func main() { // 创建一个新的随机数生成器,并使用时间戳作为熵源 r := rand.New(rand.NewSource(time.Now().UnixNano())) // 生成 10 个随机整数 for i := 0; i < 10; i++ { result := r.Intn(100) println(result) } }
透過使用rand.NewSource
和time.Now().UnixNano()
作為熵源,可以產生唯一且不可預測的隨機數。
以上是如何避免在 Golang 中產生重複的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!