■实例说明
我们使用math/rand生成指定范围的随机数
1)使用math/rand特别要注意,这里是伪随机数,如果种子相同,则第一次生成的随机数都是相同的。
2)我们每次都要设置随机种子,如time.Now().UnixNano()
■实例代码
[Golang] 纯文本查看 复制代码 package main
import (
"fmt"
"math/rand"
"time"
)
// GetRandNum 获取指定范围的随机数
func GetRandNum(min, max int64) int64 {
rand.Seed(time.Now().UnixNano())
return rand.Int63n(max-min) + min
}
func main() {
// 伪随机数,每次执行都返回同样都值
x := rand.Int31()
x1 := rand.Int31()
fmt.Println(x)
fmt.Println(x1)
// 总是返回下面的值
// 1298498081
// 2019727887
// 设置随机数种子,指定的种子值相同,则第一次调用随机数,返回的值也会相同。第二次也一样
rand.Seed(time.Now().UnixNano())
r := rand.Int31()
r1 := rand.Int31()
fmt.Println(r)
fmt.Println(r1)
// 每次执行返回值不通,因为种子time.Now().UnixNano()每次都不同
// 767993627
// 1896616526
// 获取指定范围的随机数
num := GetRandNum(1000, 8888)
fmt.Println(num)
// 每次执行返回值不通,因为种子time.Now().UnixNano()每次都不同
// 6333
}
|