如何生成每次唯一的随机数

时间:2014-10-22 02:55:52

标签: java random

嘿我正在尝试创建一个程序,生成一个只允许使用一次的随机数。对不起,如果这令我感到困惑,我会尝试解释。我希望有一个程序从1-100生成数字,但是如果它生成33,那么对于其余的数字生成过程33不能再生成,所以我应该以100个不同的数字结束。非常感谢任何帮助,谢谢。

这是我到目前为止的尝试

public class Seed {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a =0; 
        for (int i =0; i <20;i++) {
             a = (int) Math.ceil(10 * Math.random())  ;
            System.out.println(a);
            int x = a;
            System.out.println("This is x: " + x);

            if (x == a )
            {
                a = (int) Math.ceil(10 * Math.random())  ;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:11)

预先计算包含所有必需数字的List,然后在每次需要生成新数字时随机播放并删除元素。例如:

List<Integer> numbers = new ArrayList<Integer>(100);

for (int i = 0; i < 100; ++i)
  numbers.add(i);

Collections.shuffle(numbers);

int pick = numbers.remove(0);
int pick2 = numbers.remove(0);