【问题标题】:Java Random setSeed() not deterministicJava Random setSeed() 不确定
【发布时间】:2020-02-07 08:44:28
【问题描述】:

我有一个名为“Face”的类,它创建 java.util.Random 的静态实例:

public static Random random = new Random();

然后,在 Main 中,我设置种子并获得一个随机值:

Face.random.setSeed(1);
int rand = Face.random.nextInt(5);

不过,每次我运行程序时,'rand' 的值都是不同的。我需要它每次都一样。我认为设置种子可以做到这一点,但我一定不能正确理解。我错过了什么?

【问题讨论】:

  • randomFace.random 一样吗?你确定吗?因为你说它在Main,一个是来自FaceRandom;但另一个是什么?
  • len的值是多少?
  • 对不起,那是帖子中的错字。两者都应该是 Face.random,并且 len = 5。
  • 发布一个小的独立示例代码,这是可重现的。
  • 尚未查看setSeed 的详细信息,但new Random(seed) 将生成一个实例,该实例始终为同一种子创建相同的数字序列。

标签: java random


【解决方案1】:

如果您总是为每次调用设置种子,那么看起来随机数序列将被重置。

试试

random.setSeed(1);
for (int i = 0; i < 5; i++) {
    int rand = random.nextInt(5);
    System.out.println(rand);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2020-11-05
    相关资源
    最近更新 更多