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

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

PHPz
發布: 2024-02-15 16:00:10
轉載
731 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板