不废话了,直接上代码:

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。

golang随机数生成——关于rand.Seed的一点记录相关推荐

  1. Golang随机数生成器 rand

    Golang 中随机数生成器是math/rand 包 Source和rand.Seed()函数的作用 随机数由Source作为种子来生成.每次运行程序时候都会生成Source值.如果每次运行希望生成不 ...

  2. golang 随机数 math/rand包 crypto/rand包

    1.math/rand 包 1.1.math/rand 包实现了伪随机数生成器 1.2.主要方法 (1)func Seed(seed int64) 设置随机种子,不设置则默认Seed(1) (2)fu ...

  3. php记录邮件发送,有关php邮件发送一点记录

    php邮件发送需要准备2个文件:一个是 class.phpmailer.php',另一个是:class.smtp.php //文件导入,及参数获取省去.... $mail = new PHPMaile ...

  4. mysql操作数据库的步骤,Golang操作MySql数据库的完整步骤记录

    前言 MySQL是业界常用的关系型数据库,在平时开发中会经常与MySql数据库打交道,所以在接下来将介绍怎么使用Go语言操作MySql数据库. 下载MySql连接驱动 Go语言中的database/s ...

  5. matlab中rand(‘seed‘,任意符号)是干什么的?

    rand是用来产生随机数的,在程序中如果运行一次后必定产生了一次随机数,而下一次你还想用这个随机数怎么办?这个功能就用上了. rand('seed',任意符号) 举例: 首先,在产生随机数之前运行ra ...

  6. 画Excel折线图的一点记录

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.画Excel折线图的一点记录 二.步骤 提示:以下是本篇文章正文内容,下面案例可供参考 一.画Excel折线图的一点记录 ...

  7. 做游戏修改器的一点记录,有关大航海家3

    做游戏修改器的一点记录,有关大航海家3 varGameh:HWND;GamePid:DWORD;Gamehprocess: THandle;SitNum :DWORD;readByte:DWORD; ...

  8. 删除logs mysql_关于删除MySQL Logs的一点记录

    五一前,一个DBA同事反馈,在日常环境中删除一个大的slow log文件(假设文件大小10G以上吧),然后在MySQL中执行flush slow logs,会发现mysqld hang住. 今天尝试着 ...

  9. 关于Pytorch中dim使用的一点记录

    pytorch的许多函数,例如torch.cat().torch.max().torch.mul()等,都包含了dim参数.关于dim这个函数,我想许多人跟我一样,一知半解,比较模糊,下面我就把自己关 ...

最新文章

  1. windows环境下pip安装python的包时候提示invalid syntax (转载CSDN)
  2. android小程序案例_小程序案例赏析:高质量的小程序怎么做
  3. InnoDB 存储引擎体系架构
  4. python封装exe如何返回上一步_如何将python脚本封装成exe程序?
  5. Vue.set()详解
  6. 把url地址复制到粘贴板上_写个简单的python爬虫爬取堆糖上漂亮的小姐姐
  7. gpu云服务器运行游戏_追求高性能游戏,高帧高画质运行,你的手机需要多强的GPU才够?...
  8. Kubernetes 架构与设计
  9. oracle 9 10 11 比较好,atitit.Oracle 九 10 11 12新特性attilax总结
  10. 使用Simian进行重复代码检测
  11. 线性代数————思维导图(上岸必备)(向量组)
  12. JQuery实现灯箱特效
  13. Shell脚本字符串大小写转换
  14. DataTables如何重新加载数据
  15. 微软 Office 全家桶被 GPT-4 革新:Word 一键变成 PPT,打工人的春天来了!
  16. AI一周热闻:华为豪掷3.3亿剑桥买地,自建光芯片工厂;比特大陆IPO失败,组织架构调整...
  17. JAVA的教师档案管理系统_教师档案管理系统的设计与实现
  18. 碳纤维复合材料加固钢筋混凝土的极化作用
  19. 你真正做到敏捷了吗?
  20. 计算机开机一直无法访问,关于电脑开机一直正在启动的详细处理方法

热门文章

  1. 塔望3W消费战略全案|巨头林立,卤味新品牌的破局之路
  2. python kil 掉子进程
  3. 4.6Android灯光系统-背光灯
  4. 一个牛逼的Bug!一张“壁纸”让三星手机秒变砖!
  5. 最初制造计算机的目的,31最早研究图像处理技术的目的是为了改善人类分析判断图像信息的能力随着计算机与人工智能技术的发展以及生产制造方面...
  6. 初学C语言常见的错误
  7. python如何精确过滤出一个串里的英文单词
  8. jqyery第四章上级训练一
  9. 如何写网络营销用的成功案例文章
  10. druid password 加密原生使用