admin 发表于 2022-8-3 20:43:21

golang:使用rand生成指定范围随机数

■实例说明
我们使用math/rand生成指定范围的随机数
1)使用math/rand特别要注意,这里是伪随机数,如果种子相同,则第一次生成的随机数都是相同的。
2)我们每次都要设置随机种子,如time.Now().UnixNano()


■实例代码
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
}

页: [1]
查看完整版本: golang:使用rand生成指定范围随机数