首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机种子之间的区别重要吗?

随机种子之间的区别重要吗?
EN

Stack Overflow用户
提问于 2016-01-20 19:25:21
回答 3查看 942关注 0票数 4

这会否:

代码语言:javascript
复制
new java.util.Random(/* random seed */ 0)
new java.util.Random(/* random seed */ 1)

在某种程度上导致了“更少的随机”/“更相似的”随机发生器?

代码语言:javascript
复制
new java.util.Random(/* random seed */ 0)
new java.util.Random(/* random seed */ 1000)

换句话说:如果随机产生器的随机种子是相似的,那么我是否有风险从随机生成器获得类似的ints序列?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-20 19:29:49

不,相似的种子,不会产生相似的随机数。

只有相同的种子才能产生相同的数目。

设置种子的代码是:

代码语言:javascript
复制
void setSeed(long seed) {
    this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
..}

这个公式避免了this.seed获取输入种子值的简单值(在构造函数中使用或由setSeed()使用)。

然而,也有一些弱点,als在http://dontpanic.42.nl/2011/03/when-random-isn-as-random-as-expected.html中解释说

票数 4
EN

Stack Overflow用户

发布于 2016-01-20 19:30:32

用于产生伪随机数的状态更新是混沌.因此,使用相邻的种子值会产生完全不同的状态轨迹。

票数 1
EN

Stack Overflow用户

发布于 2016-01-20 19:48:36

随机数从来都不是随机的。它们完全是预先定义的,给出相同的种子将导致相同的数目,甚至超过一百万次不同的命令运行,这就是它们被称为“伪随机”的原因。最好的方法是在每次运行程序时都使用不同的值作为种子,这些值不能很容易地预测,例如当前的时间和日期以及/或已经过去的时钟周期的数目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34908753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档