1. 首页
  2. 编程语言
  3. 其他
  4. 解决Go中使用seed得到相同随机数的问题

解决Go中使用seed得到相同随机数的问题

上传者: 2021-12-31 07:47:15上传 PDF文件 105.82 KB 热度 8次

废话不多说,首先我们来看使用seed的一个很神奇的现象。我们首先得明确seed的用途。seed 只用于决定一个确定的随机序列。不管seed多大多小,只要随机序列一确定,本身就不会再重复。由此可见,无论seed是否相同,这两个变量的值都不会受seed的影响。而且无论seed是否被赋值,只要检测到是零值,都会默认的赋值为89482311。通过阅读seed的源码我们知道,这是因为生成了相同的随机序列。可以看到,无论是int31还是int63,最终都会进入Uint64这个函数中。tap的值是常量0,而feed的值决定于rngLen和rngTap,而这两个变量的值也是一个常量。首先评估是否需要使用seed,其次,使用seed只需要在全局调用一次即可,如果多次调用则有可能取到相同随机数。

下载地址
用户评论