
Go 伪随机数基础知识
使用包 math/rand 中的 rand.Seed 和 rand.Int63 函数生成 int64 类型的非负伪随机数:
rand.Seed(time.Now().UnixNano())
n := rand.Int63() // for example 4601851300195147788
复制代码
同样,rand.Float64 生成伪随机浮点数 x,其中 0 ≤ x < 1:
x := rand.Float64() // for example 0.49893371771268225
复制代码
rand.Seed
请参阅随机数生成器中的种子是什么?, 解释伪随机数生成器的原理。
几个随机源
math/rand
Rand
generator := rand.New(rand.NewSource(time.Now().UnixNano()))
n := generator.Int63()
x := generator.Float64()
复制代码
给定范围内的整数和字符
a 和 b 之间的数字
使用 rand.Intn(m),它返回一个伪随机数 n,其中 0 ≤ n < m。
n := a + rand.Intn(b-a+1) // a ≤ n ≤ b
复制代码
'a' 和 'z' 之间的字符
c := 'a' + rune(rand.Intn('z'-'a'+1)) // 'a' ≤ c ≤ 'z'
复制代码
切片中的随机元素
要从任意集合生成字符,请从字符切片中选择一个随机索引:
chars := []rune("AB⌘")
c := chars[rand.Intn(len(chars))] // for example '⌘'
复制代码
延伸阅读
