Golang:随机数

作者: 与蟒唯舞 | 来源:发表于2017-11-16 10:31 被阅读75次

    golang 随机数有一个很有趣的地方,如果我们不自行定义随机数种子的话,每次生成的随机数都是一样的。

    比如 for 循环,打印 10 个随机数,每次运行结果是一模一样的。代码如下:

    package main
    
    import (
        "fmt"
        "math/rand"
    )
    
    func main() {
        for index := 0; index < 10; index++ {
            fmt.Println(rand.Intn(10))
        }
    }
    

    第一次运行结果如下:

    1
    7
    7
    9
    1
    8
    5
    0
    

    第二次运行结果如下:

    1
    7
    7
    9
    1
    8
    5
    0
    

    golang 在默认随机的时候,固定以数字 1 作为种子。既然种子都固定了的话,那每次执行的结果当然是一样的。

    要解决这个问题,就需要以时间作为随机数种子。代码如下:

    package main
    
    import (
        "fmt"
        "math/rand"
        "time"
    )
    
    func main() {
        r := rand.New(rand.NewSource(time.Now().UnixNano()))
        for index := 0; index < 10; index++ {
            fmt.Println(r.Intn(10))
        }
    }
    

    这样就可以使用时间种子来获取不同的结果了。

    相关文章

      网友评论

        本文标题:Golang:随机数

        本文链接:https://www.haomeiwen.com/subject/yvakvxtx.html