博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang随机数生成踩过的坑记录一下
阅读量:6162 次
发布时间:2019-06-21

本文共 1600 字,大约阅读时间需要 5 分钟。

不废话了,直接上代码:

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

 

运行测试一下,

$ go run rand.go
81
87

OK,看似没问题,但再运行一次看看:

$ go run rand.go

81
87

输出的结果完全一样,查看官网上的例子:

package mainimport ("fmt""math/rand")func main() {rand.Seed(42) // Try changing this number! 注意,注意,注意,重要的事情说三遍answers := []string{"It is certain","It is decidedly so","Without a doubt","Yes definitely","You may rely on it","As I see it yes","Most likely","Outlook good","Yes","Signs point to yes","Reply hazy try again","Ask again later","Better not tell you now","Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no","My sources say no","Outlook not so good","Very doubtful",}fmt.Println("Magic 8-Ball says:", answers[rand.Intn(len(answers))])}

 

我这边运行输出如下:

Magic 8-Ball says: As I see it yes
多运行几次,输出结果不变。按照注释中说的,修改rand.Seed(42),随便改这里的值:rand.Seed(2),结果如下:
Magic 8-Ball says: Most likely
多运行几次还是不变,所以关键在rand.Seed()这里,查看文档:
func (r *Rand) Seed(seed int64)
Seed uses the provided seed value to initialize the generator to a deterministic state.
Seed使用提供的seed值将发生器初始化为确定性状态。不是很理解这句话的意思,修改一下一开始的代码试试:

package mainimport ("fmt""math/rand""time")func main() {rand.Seed(time.Now().Unix())fmt.Println(rand.Intn(100))fmt.Println(rand.Intn(100))}

$ go run rand.go

9

46
$ go run rand.go
78
98

OK,每次运行产生的输出不一样了。

几点注意项:

1、如果不使用rand.Seed(seed int64),每次运行,得到的随机数会一样,程序不停止,一直获取的随机数是不一样的;

2、每次运行时rand.Seed(seed int64),seed的值要不一样,这样生成的随机数才会和上次运行时生成的随机数不一样;

3、rand.Intn(n int)得到的随机数int i,0 <= i < n。

---------------------

转载于:https://www.cnblogs.com/golangxiong/p/10203166.html

你可能感兴趣的文章
微信小程序开发-框架
查看>>
redo、undo、binlog的区别
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
汉字转拼音 (转)
查看>>
会计基础_001
查看>>
小程序: 查看正在写的页面
查看>>
Jenkins持续集成环境部署
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>