任何人都可以告诉我如何生成随机数而不重复 例子
随机(10)应该(可能)返回3,4,2,1,7,6,5,8,9,10而不重复
谢谢
答案 0 :(得分:25)
我建议将数字添加到ArrayList<Integer>
,然后使用Collections.shuffle()
随机化他们的订单。像这样:
ArrayList<Integer> number = new ArrayList<Integer>();
for (int i = 1; i <= 10; ++i) number.add(i);
Collections.shuffle(number);
答案 1 :(得分:4)
列出生成的数字,当您新生成的数字已在此列表中时,您会创建一个新的随机数。
Random rng = new Random(); // Ideally just create one instance globally
List<Integer> generated = new ArrayList<Integer>();
for (int i = 0; i < numbersNeeded; i++)
{
while(true)
{
Integer next = rng.nextInt(max) + 1;
if (!generated.contains(next))
{
// Done for this iteration
generated.add(next);
break;
}
}
}
答案 2 :(得分:2)
我的两分钱
public Collection<Integer> getRandomSubset(int max,int count){
if(count > max){
throw new IllegalArgumentException();
}
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = 0 ; i < count ;i++){
list.add(i);
}
Collections.shuffle(list);
return list.subList(0, count);
}
答案 3 :(得分:-2)
如果只有少数数字,少于100,我认为我的解决方案可以创建一个布尔数组,一旦得到一个数字,将数组的位置设置为true。我不认为需要很长时间才能显示所有数字。希望它有所帮助!
干杯!