• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go随机数的使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

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

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go Gin Example发布时间:2022-07-10
下一篇:
聊聊Go语言的那些事发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap