我试图在 Go 中生成随机数(整数),但无济于事。我在 crypto/rand
中找到了 rand
包,这似乎是我想要的,但我无法从文档中得知如何使用它。这就是我现在正在尝试的:
b := []byte{}
something, err := rand.Read(b)
fmt.Printf("something = %v\n", something)
fmt.Printf("err = %v\n", err)
但不幸的是,这总是输出:
something = 0
err = <nil>
有没有办法解决这个问题,以便它实际生成随机数?或者,有没有办法设置生成的随机数的上限?
最佳答案
根据您的用例,另一个选项是 math/rand
包。如果您要生成需要完全不可预测的数字,请不要这样做。但是,如果您需要获得可重现的结果,这会很有帮助 - 只需传递您第一次传递的同一个种子。
这是经典的“以当前时间为生成器播种并生成一个数字”程序:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().Unix())
fmt.Println(rand.Int())
}
关于random - 在 Go 中生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6181260/