在java中生成随机整数

ant*_*ant 1 java

如何生成随机整数但确保它们不会重复?

现在我使用:

Random randomGenerator = new Random();
randomGenerator.nextInt(100);

EDIT I
Run Code Online (Sandbox Code Playgroud)

我正在寻找最有效的方式,或者最不好的方式

EDIT II
Run Code Online (Sandbox Code Playgroud)

范围并不重要

Mat*_*hen 15

ArrayList<Integer> list = new ArrayList<Integer>(100);
for(int i = 0; i < 100; i++)
{
  list.add(i);
}
Collections.shuffle(list);
Run Code Online (Sandbox Code Playgroud)

现在,list包含数字0到99,但是以随机顺序排列.


Jhe*_*ico 6

如果您想要的是伪随机非重复数字序列,那么您应该查看线性反馈移位寄存器.它将产生介于0和给定功率2之间的所有数字,而不会重复.您可以通过选择最接近的2的较大幂并将所有结果丢弃到N来轻松地将其限制为N.它没有其他基于集合的解决方案所具有的内存限制.

你可以在这里找到java实现