首頁 >後端開發 >Golang >rand.Seed(SEED) 已棄用,如何使用 NewRand(NewSeed( ) )?

rand.Seed(SEED) 已棄用,如何使用 NewRand(NewSeed( ) )?

PHPz
PHPz轉載
2024-02-15 16:00:10689瀏覽

rand.Seed(SEED) 已弃用,如何使用 NewRand(NewSeed( ) )?

php小編西瓜在這裡給大家分享一個解決方案,當我們使用rand.Seed(SEED)被棄用時,我們可以使用NewRand(NewSeed())來代替。 NewSeed()函數可以產生一個新的種子,而NewRand()函數則可以使用這個新種子來產生隨機數。這個方法可以幫助我們繼續使用隨機數產生功能,而不受到rand.Seed(SEED)被棄用的限制。透過這種方式,我們可以輕鬆解決這個問題,並繼續使用隨機數來產生功能。

問題內容

我現在正在學習go。

我是一個例子,我有這行

rand.seed(seed)

但是關於 go 的 vscode 擴充功能告訴了我

rand.Seed has been deprecated since Go 1.20 and an alternative has been available since Go 1.0: Programs that call Seed and then expect a specific sequence of results from the global random source (using functions such as Int) can be broken when a dependency changes how much it consumes from the global random source. To avoid such breakages, programs that need a specific result sequence should use NewRand(NewSource(seed)) to obtain a random generator that other packages cannot access.  (SA1019)

我無法理解如何按照建議使用 newrand(newsource(seed))

我找到了有關 newsource 的文檔 https://pkg.go.dev/math/rand#newsource

#但是沒有關於 newrand 函數的文檔

新建議的 rand.seed(seed) 等效項是什麼?

解決方法

go 1.20 種子文件有拼字錯誤。依照最新文件中的說明使用 中的说明使用 rand.new(rand.newsource(seed)) a> 和 go 1.20 發行說明

建立隨機來源並使用來源上的方法而不是呼叫套件函數:

r := rand.New(rand.NewSource(seed))
  fmt.Println(r.Uint64())
  fmt.Println(r.Uint64())

以上是rand.Seed(SEED) 已棄用,如何使用 NewRand(NewSeed( ) )?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除