如何在Go中正确初始化随机数生成器?
你好!我是Go新手,正在尝试理解随机数生成。我了解到Go中有`math/rand`包,但遇到一个问题:每次运行程序时,我都会得到相同的数字序列。
这是我的代码:
```go
package main
import (
"fmt"
"math/rand"
)
func main() {
for i := 0; i < 5; i++ {
fmt.Println(rand.Intn(100))
}
}
```
每次运行时输出总是相同的:`81, 87, 47, 59, 81`。我期望数字会变化。我听说需要某种方式“seed”(初始化)生成器,但不知道如何正确操作。
当我尝试使用`rand.Seed(time.Now().UnixNano())`时,linter警告说Seed在Go 1.20中已弃用。那么在Go的现代版本中,如何正确初始化生成器?`math/rand`和`crypto/rand`有什么区别?对于普通任务(非加密任务),哪种方法被认为是正确的?
感谢您提供详细的解释和示例。