android - 生成随机数而不重复

时间:2011-10-11 11:03:51

标签: java random

任何人都可以告诉我如何生成随机数而不重复 例子

随机(10)应该(可能)返回3,4,2,1,7,6,5,8,9,10而不重复

谢谢

4 个答案:

答案 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。我不认为需要很长时间才能显示所有数字。希望它有所帮助!

干杯!