随机

随机性 属于 Go

2 个练习

关于 随机性

包 math/rand 提供了生成伪随机数的支持。

下面介绍如何生成一个介于0和99之间的随机整数:

import "math/rand"

n := rand.Intn(100) // n is a random int, 0 <= n < 100

函数rand.Float64返回一个介于0.0和1.0之间的随机浮点数:

f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0

此外还支持打乱切片(或其他数据结构):

x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
	x[i], x[j] = x[j], x[i]
})

种子

包math/rand生成的数字序列并不是真正随机的。 给定一个特定的“种子”值,结果就完全是确定的。

在 Go 1.20+ 中,种子会自动随机选取,因此每次运行程序时你都会看到不同的随机数字序列。

在更早的 Go 版本中,种子默认为1。 因此,要想在多次运行程序时得到不同的序列,你必须在获取任何随机数之前,手动为随机数生成器设置种子,例如使用当前时间。

rand.Seed(time.Now().UnixNano())
通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 随机性

练习已锁定

再解锁 2 个练习即可练习 随机性