Java Array of unique randomly generated integers

后端 未结 9 839
再見小時候
再見小時候 2020-11-28 16:06
public static int[] uniqueRandomElements (int size) {

    int[] a = new int[size];

    for (int i = 0; i < size; i++) {
        a[i] = (int)(Math.random()*10);
         


        
9条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-28 16:38

    If you just don't want to pay for the added overhead to ArrayList, you can just use an array and use Knuth shuffle:

    public Integer[] generateUnsortedIntegerArray(int numElements){
        // Generate an array of integers
        Integer[] randomInts = new Integer[numElements];
        for(int i = 0; i < numElements; ++i){
            randomInts[i] = i;
        }
        // Do the Knuth shuffle
        for(int i = 0; i < numElements; ++i){
            int randomIndex = (int)Math.floor(Math.random() * (i + 1));
            Integer temp = randomInts[i];
            randomInts[i] = randomInts[randomIndex];
            randomInts[randomIndex] = temp;
        }
        return randomInts;
    }
    

    The above code produces numElements consecutive integers, without duplication in a uniformly random shuffled order.

提交回复
热议问题