Java Random.nextInt()生成的数字序列何时重复

Java Random.nextInt()生成的数字序列何时重复,java,random,Java,Random,有人知道Java的Random.nextInt()是否会在一段时间后重复吗 具体地说,是否有这样一个数字n使得以下两个列表相等 List<Integer> a = new LinkedList<>(); List<Integer> b = new LinkedList<>(); for (int i = 0; i < n; ++i) a.add(randObject.nextInt()); for (int i = n; i <

有人知道Java的
Random.nextInt()
是否会在一段时间后重复吗

具体地说,是否有这样一个数字
n
使得以下两个列表相等

List<Integer> a = new LinkedList<>();
List<Integer> b = new LinkedList<>();

for (int i = 0; i < n; ++i)
   a.add(randObject.nextInt());

for (int i = n; i <= n * 2 ; ++i)
   b.add(randObject.nextInt());
List a=newlinkedlist();
列表b=新的LinkedList();
对于(int i=0;i
但是从javadoc

nextInt的一般约定是伪随机生成并返回一个int值。所有2^32个可能的int值以(近似)相等的概率生成

有人知道Java的Random.nextInt()是否会在一段时间后重复吗

是的,它会。因为生成器有有限的状态,所以生成的序列有一个有限的周期

具体地说,数字n是什么使得下面两个列表相等

List<Integer> a = new LinkedList<>();
List<Integer> b = new LinkedList<>();

for (int i = 0; i < n; ++i)
   a.add(randObject.nextInt());

for (int i = n; i <= n * 2 ; ++i)
   b.add(randObject.nextInt());
这没有指定,取决于Java实现

是否可以保证每个随机对象总是有这样的n,而不管其种子是什么


周期是有限的。然而,并非每个种子的周期都是相同的。

j.u.Random
的周期最多为2^48。我不是想问每个种子是否都有相同的周期,我的意思是,“每个种子都有周期吗?”@onetwother是的,因为
j.u.Random
是一个伪随机发生器(作为LCG实施)。“每个种子都有一个周期吗?”是