随机类表现得很奇怪?

2022-09-03 09:04:46

在此代码中:

Random random = new Random(441287210);
for(int i=0;i<10;i++)
    System.out.print(random.nextInt(10)+" ");
}

每次输出都是 。1 1 1 1 1 1 1 1 1 1

这是为什么呢?不应该是...井。。。随机?我认为类使用,所以输出一般应该是随机的。有人可以解释一下吗?RandomRandomSystem.nanoTime


答案 1

让它再打印几个,前100个是

1 1 1 1 1 1 1 1 1 1 3 4 7 2 2 6 0 3 0 2 8 4 1 6 0 0 0 2 8 2 9 8 9 2 5 2 1 1 4 5 3 4 1 4 1
8 7 6 6 0 6 5 0 4 5 5 6 0 8 3 8 9 7 4 0 9 9 7 7 9 3 9 6 4 5 0 6 3 7 4 9 8 7 6 2 8 9 8 4 4
8 4 9 0 1 6 9 6 1 5

看起来还行。

每个好的(伪)随机序列都包含重复数字的条纹,这个序列以一开始。


答案 2

类生成的值是伪随机的:它们是使用基于种子值的确定性算法创建的。通常(例如,如果您使用无参数构造函数),种子使用当前时间进行初始化,这显然是一个唯一的值。因此,生成一个唯一的“随机”序列。Random

在这里,您使用的是一个常量种子值,该值在代码执行之间不会更改。因此,您始终获得相同的序列。碰巧这个序列是针对这个特定的种子的。1 1 1 1 1 1 ...


推荐