有人可以解释为什么以下代码提供输出0 1 2 3 4 5 6 7 8 9
。
Random random = new Random(-6732303926L);
for(int i=0;i<10;i++)
System.out.println(random.nextInt(10)+" ");
从Java API Random我可以看到构造函数Random(long seed)
使用单个long seed
创建一个新的随机数生成器。那么,这又是随机的,为什么每次都会产生固定输出?
答案 0 :(得分:5)
每次都会给出一个固定的输出,因为你使用的是相同的种子。您正在使用的特定种子恰好提供顺序输出:0 1 2 3 4 5 6 7 8 9
。
答案 1 :(得分:4)
从Java API Random我可以看到构造函数Random(long seed)使用单个long种子创建一个新的随机数生成器。那么,这又是随机的,为什么每次都会产生固定输出?
seed用于在程序的不同运行中生成相同的输出(来自随机操作)。因此,每次使用相同的种子创建Random
对象时,它都会输出相同的结果。
注意:强>
您选择的种子具有特定的输出,即0 1 2 3 4 5 6 7 8 9
,但它并不意味着什么。还会有一些具有相同输出的其他种子。
答案 2 :(得分:4)
每个奇怪的序列都有非零概率发生:)