java生成隨機數

要求: 在一定的範圍之內取出一定數量的隨機數。比如我要取出100以內的5個不重複的隨機數,主要的是不能重複,或者是取出5~100之間50個隨機數,但是不能重複

方法一:

思想:先把我要的隨機數範圍給遍歷出來放到一個數組當中,然後獲得隨機數,把這個隨機數作爲數組的索引,取出該數組中相對應的數字作爲隨機數放在一個新的專門存放隨機數的數組當中,

-----------------------------------------------------------------------------------------------------------------------------------------------------

 

/**

*    param n 取出隨機數的個數

*    param begin  隨機數產生的開始數 

*    param end   隨機數產生的終點

**/

public static int[] generateDifNums(int n, int begin, int end) {

 

int length = end - begin + 1;

int[] seed = new int[length];

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

seed[i] = begin + i;

}

int[] ranArr = new int[n];

Random ran = new Random();

for (int i = 0; i < n; i++) {

int j = ran.nextInt(length - i);

ranArr[i] = seed[j];

seed[j] = seed[length - 1 - i];

 

}

return ranArr;

} 


 

=============================================================================================

 

要求,取出1~100之內的5個完全不重複的隨機數

 

方法一:

 

隨機取0-100的5個數, 每取一個,就放到set中。直到set的size等於5就停止、
 //hashset裏面不允許有重複的值,如果有重複的值,是插不進去的(不會覆蓋)
------------------------------------------------------------------------------------------------------

HashSet<Integer> hs = new HashSet<Integer>();          

Random r = new Random();
        while(hs.size()<5)
        {
                hs.add(r.nextInt(100));
        }

 

方法二:

分5個不同區間,每個區間20個值,隨機取每個區間的一個值


 

方法三:

----------------------------------------------------------------------------------------------------------------------------------

import java.util.HashSet;

public class Test {
 public static void main(String args[]) {
     HashSet<Integer> hs = new HashSet<Integer>();
     while (true) {
          int a = (int)(Math.random() * 100);
          if(a >= 10 && a <= 100) {
               hs.add(a);
         }
          if (hs.size() == 5) {
               break;
          }
     }
     System.out.println(hs);
  }
}


 

發佈了29 篇原創文章 · 獲贊 29 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章