当前位置: 首页> 电脑> 正文

go 儿童编程(go网页编程)-微PE WEIPE.NET

  • 电脑管家电脑管家
  • 电脑
  • 2024-01-17 22:05:55
  • 25

go 儿童编程(go网页编程)-微PE WEIPE.NET

go语言能不能生成随机数?答案是不能。不光是go语言,任何编程语言都没有办法生成真正的随机数,都是伪随机数!

一般来说,go语言可以用func Seed(seed int64)来生成随机数,其中seed是生成随机数的种子,如果seed是一个固定的值,那么每次生成的随机数就是一样的,当然就失去了随机数的性质和价值了。

为了得到一个变化的随机数,我们通常用时间戳来作为随机数种子,比如这样rand.Seed(time.Now().Unix())就可以获得一个变化的随机数了。如果你需要随机数的频率不够高,比如一秒钟获取一次,那么你会感觉你真的获取到了随机数,因为每次获取到的数字都不同。

如果你获取随机数的频率要更高,比如一秒钟要获取100次,那么rand.Seed(time.Now().Unix())就无法满足你的要求了,你会发现很多连续的重复数字。问题也不大,我们可以用rand.Seed(time.Now().UnixNano())。time.Now().UnixNano()表示纳米级时间戳,如果你最快一纳米获取一次随机数,那么这个方法就基本够用了。如果你获取随机数的频率需要更高,需要1纳米获取多次,那么这个方法也不能满足你的需求了。

看来要获取真正的随机数,只能用量子计算机了!

最新文章