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

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

  • 相关阅读:
    Cocos2d-x移植Android 常见问题处理办法
    JSON解析问题
    类图(Rose)
    Linux_脚本——使用echo从一个文件写入还有一个文件末尾
    Android HttpClient自己主动登陆discuz论坛!
    Swift编程语言学习1.1——常量与变量
    DVR_RDK编译报错
    啊马蜂蜜哦我阿达十米台内又热偶爱
    贪婪算法之兑换硬币及问题所在
    00095_流的操作规律
  • 原文地址:https://www.cnblogs.com/lanyangsh/p/8465076.html
Copyright © 2011-2022 走看看