为什么随机在这里表现不同?

时间:2014-04-10 18:57:37

标签: java random

有人可以解释为什么以下代码提供输出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创建一个新的随机数生成器。那么,这又是随机的,为什么每次都会产生固定输出?

3 个答案:

答案 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)

每个奇怪的序列都有非零概率发生:)

enter image description here enter image description here