random - 在 Go 中生成随机数

标签 random go

我试图在 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/

相关文章:

go - 在goroutines中使用select语句进行 channel 通信行为

ios - random() 会改变吗?

C++ 随机数生成

javascript - 如何在js中分散随机定位的图像?

go - GCP端点和所需的端口

go - 具有结构的golang单元测试

algorithm - 具有随机性的 Riffle 洗牌算法

c# - 选择随机字符

memory - Go 中的磁盘备份数组

go - 输出反向链表时出现无限循环