在所有数字被击中的范围内生成随机数

时间:2014-09-13 04:09:31

标签: java

我想生成范围0-9的随机整数,并将其放入 size 100 的数组中。这很容易,但我对如何确保在数组中,我至少有一个0-9范围内的每个整数的出现一无所知。

顺便说一句,这都是使用java的。

这是我到目前为止所得到的(我的编码中的数字不同,因为我想问一个更简单的问题):

public static int[] extendTo1024(int[] key) {
    int[] extendedKey = new int[1024];
    Random random = new Random();
    for(int i = 0; i < 1024; i++) {
        int rand = random.nextInt(64) + 1;
        extendedKey[i] = bitKey[rand];
    }
    return extendedKey;
}

有任何帮助吗?提前谢谢!

2 个答案:

答案 0 :(得分:3)

  1. 使用数字0-9
  2. 填充前10个元素
  3. 用随机数填写其余部分
  4. 随机播放阵列

答案 1 :(得分:1)

ArrayList<Integer> al = new ArrayList<Integer>();

//make sure the array contains all occurences of 0-9
for (int i = 0; i < 10; i++) {
    al.add(i, i);
}

//generate random number for the remaining 90
for (int i = 10; i < 100; i++) {
    int random = (int) (Math.random() * 10);            
    al.add(i, random);
}

//shuffle the random numbers to make sure that the first 10 are randomly placed
Collections.shuffle(al);

//Convert it back to array (In case you need it to be array not ArrayList)
Integer[] randomNums = al.toArray(new Integer[100]);

//result
for (int i : randomNums) {
    System.out.println(i);
}