Non repeating random number array

前端 未结 6 1935
攒了一身酷
攒了一身酷 2020-12-21 20:49

I need to make a typical integer filled array with 10 random non repeating numbers from 0 to 20. Also, I need to be able to modify this so I can exclude some random numbers

6条回答
  •  攒了一身酷
    2020-12-21 20:59

    Well, I could't help it not to post my solution which is storing a sequance of numbers into twice as many random locations first. Then compacts it into the resultting array.

    int[] myRandomSet = generateNumbers(20, 10);

    ...

    public int[] generateNumbers(int range, int arrayLenght){
        int tempArray[];
        int resultArray[];
        int doubleLocations;
        Random generator = new Random();
    
        doubleLocations = range * 2;
        tempArray = new int[doubleLocations];
        resultArray = new int[arrayLenght];
    
        for (int i=1; i<=range; i++){   
            if (i != 5 && i != 13){  //exclude some numbers
                do{
                    r = generator.nextInt(doubleLocations); 
                }while(tempArray[r]!=0);
                tempArray[r] = i; //enter the next number from the range into a random position
            }
        }
    
        int k = 0;
        for (int i=0; i<(doubleLocations); i++){
            if(tempArray[i] != 0){
                resultArray[k] = tempArray[i]; //compact temp array
                k++;
                if (k == arrayLenght) break;
            }
        }
    
        return resultArray;
    }
    

提交回复
热议问题