zoukankan      html  css  js  c++  java
  • Go随机数

    Go math/rand包用于生成随机数。

    代码:

    package main
    
    import "fmt"
    import "math/rand"
    
    func main() {
    
        fmt.Println(rand.Intn(100)) //产生0-100的随机整数
    
        fmt.Println(rand.Float64()) //产生0.0-1.0的随机浮点点
    
        s1 := rand.NewSource(42) //用指定值创建一个随机数种子
        r1 := rand.New(s1)
        fmt.Print(r1.Intn(100), ",")
        fmt.Print(r1.Intn(100))
        fmt.Println()
    
        s2 := rand.NewSource(42) //同前面一样的种子
        r2 := rand.New(s2)
        fmt.Print(r2.Intn(100), ",")
        fmt.Print(r2.Intn(100))
        fmt.Println()
    }

    返回结果:

    81

    0.9405090880450124

    5,87

    5,87

    多次重复执行上述代码,返回的结果仍然是一样的。所以为了使得调用的随机数不相同,就需要使用NewSource来提供一个随机的种子。比如:

    s2 := rand.NewSource(time.Now().Unix())

    如果在同一次执行中多次调用,返回的结果是不一样的:

    比如这个代码:

    package main
    
    import "fmt"
    import "math/rand"
    
    func main() {
        fmt.Println(rand.Intn(100))
        fmt.Println(rand.Intn(100))
        fmt.Println(rand.Intn(100))
        fmt.Println(rand.Intn(100)) 
    }

    go run random.go连续执行三次,显示结果为:

    $ go run random.go

    81

    87

    47

    59

    $ go run random.go

    81

    87

    47

    59

    $ go run random.go

    81

    87

    47

    59

  • 相关阅读:
    mysql密码重置
    利用python生成定制二维码
    totnado前后端分离跨域设置
    supervisor详解
    redis持久化常识和配置
    redis数据的备份与恢复
    supervisor下更换源文件报错
    EF5框架封装
    IEnumerable和IEnumerator 详解
    心宽,路自宽
  • 原文地址:https://www.cnblogs.com/baiyuxiong/p/4545032.html
Copyright © 2011-2022 走看看