JAVA中獲取不重復的隨機數


我們知道 Random random = new  Random() 中可能會獲取到重復的隨機數

那么假設要獲取1到33之間的六個不重復隨機數應該怎么做呢?

首先定義一個數字數組存儲1到33

 

int[ ]  redBall = new int[33[;

for(int i = 0;i<redBall.length;i++){

  redBall[i] = i+1;

}

int[ ]  redNumber = new int[6];     //存儲六個隨機數的實際數組

int index = -1;                             //通過隨機數字數組下標獲取隨機數

for(int i = 0;i<redNumber.length;i++){

  index = random.nextInt(redBall.length-i);   //每次獲取數字數組長度-i的隨機數,比如第一次循環為33第二次為32,

  redNumber[i] = redBall[index];                   //把數字數組隨機下標的值賦給實際數組

  int temp = redBall[index];                           //定義一個變量暫存下標為index時的值

  redBall[index] = redBall[redBall.length-1-i];  //把下標為index的值與數組下標最后的值交換

  redBall[redBall.length-1-i] = temp;             //交換后,下次循環把數字數組最后的值去掉,從而實現不重復

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM