Go语言 种子(SEED)已过时,如何使用NewRand(NewSeed())?

ql3eal8s  于 2023-03-06  发布在  Go
关注(0)|答案(1)|浏览(4599)

我正在学围棋。
我举个例子我有这句台词

rand.Seed(SEED)

但是go的vscode扩展告诉我
兰德自Go语言1.20起已被弃用,自Go语言1.0起出现了一个替代版本:调用Seed然后期望来自全局随机源的特定结果序列(使用诸如Int的函数)的程序在依赖性改变其从全局随机源消耗的量时可能被破坏。为了避免这种破坏,需要特定结果序列的程序应使用NewRand(NewSource(seed))来获得其他包不能访问的随机生成器。(SA1019)
我无法理解如何按照建议使用NewRand(NewSource(seed))
我找到了关于NewSource的文档https://pkg.go.dev/math/rand#NewSource
但是没有关于NewRand函数的文档
新推荐的rand.Seed(SEED)的等效项是什么?

ryevplcw

ryevplcw1#

Go语言1.20 Seed文档有一处拼写错误,请按照最新文档和Go 1.20 release notes中的说明使用rand.New(rand.NewSource(seed))
创建随机源并在源上使用方法,而不是调用包函数:

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

相关问题