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

    随机数使用比较广泛,例如,抽奖、均衡等等。

    下面简单说明其使用方法。

    Example1

    package main
    
    import (
            "log"
            "math/rand"
    )
    
    func main() {
            i := rand.Intn(3)
            log.Println(i)
    }
    

    output:

    $ ./t
    2018/02/24 11:40:58 2
    $ ./t
    2018/02/24 11:40:59 2
    $ ./t
    2018/02/24 11:41:00 2
    $ ./t
    2018/02/24 11:41:01 2
    $ ./t
    2018/02/24 11:41:02 2
    $ ./t
    2018/02/24 11:41:02 2
    $ ./t
    2018/02/24 11:41:03 2
    $ ./t
    2018/02/24 11:41:04 2

    其中

    rand.Intn(n int)

    返回[0,n)之间的随机数

    每次执行时得到的结果都是一样的。

    没有调用Seed时, 默认使用Seed(1)。种子不变,产生的随机数就会不变。

    Example2

    package main
    
    import (
            "log"
            "math/rand"
            "time"
    )
    
    func main() {
            rand.Seed(time.Now().UnixNano())
            i := rand.Intn(3)
            log.Println(i)
    }
    

    output

    $ ./t
    2018/02/24 11:43:29 0
    $ ./t
    2018/02/24 11:43:31 2
    $ ./t
    2018/02/24 11:43:33 1
    $ ./t
    2018/02/24 11:43:34 2
    $ ./t
    2018/02/24 11:43:35 0
    $ ./t
    2018/02/24 11:43:36 2
    $ ./t
    2018/02/24 11:43:37 1
    $ ./t
    2018/02/24 11:43:38 1
    $ ./t
    2018/02/24 11:43:39 2
    $ ./t
    2018/02/24 11:43:40 2
    $ ./t
    2018/02/24 11:43:44 0

    使用时间作为种子,输出完全随机数。

    Example3

    package main
    
    import (
            "log"
            "math/rand"
            "time"
    )
    
    
    func main() {
            rand.Seed(time.Now().UnixNano())
            log.Println(rand.Perm(3))
    }
    

    output:

    $ ./t
    2018/02/24 12:04:27 [0 1 2]
    $ ./t
    2018/02/24 12:04:28 [0 2 1]
    $ ./t
    2018/02/24 12:04:30 [0 2 1]
    $ ./t
    2018/02/24 12:04:32 [0 1 2]

    Perm(n)产生[0,n)的伪随机序列。

    关于种子

    随机种子(Random Seed)是计算机专业术语,一种以随机数作为对象的以真随机数(种子)为初始条件的随机数。一般计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数。

    种子一般使用当前的系统时间,这是完全随机的。

  • 相关阅读:
    解决行内块元素(inline-block)之间的空格或空白问题
    gzip压缩文件&webPack配置Compression-webpack-plugin
    IOS微信禁用分享跳转页面返回BUG修复
    开发自己的composer包
    深入理解Java中的迭代器
    理解JDK1.5的自动装箱拆箱
    [design-patterns]设计模式之一策略模式
    [java]final关键字的几种用法
    [java]static关键字的四种用法
    [java]我的数据在哪里?——数据的内存模型
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/8465076.html
Copyright © 2011-2022 走看看