有人知道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());
是否保证每个随机对象都有一个句点? (注意:不同种子的物体不必具有相同的时期)
答案 0 :(得分:4)
有人知道Java的Random.nextInt()会在一段时间后重演吗?
是的,它会。由于生成器具有有限的状态量,因此生成的序列具有有限的周期。
具体而言,n为什么以下两个列表相等?
没有指定,取决于Java实现。
是否保证每个随机对象总会有这样的n,无论它的种子是什么?
这段时间是有限的。但是,对于每个种子而言,情况并不一定如此。
答案 1 :(得分:-1)
如果你真的非常幸运,那么。否则没有。
但是来自 javadoc
nextInt的一般契约是伪随机生成并返回一个int值。所有2 ^ 32个可能的int值以(近似)相等的概率产生。