1. 程式人生 > >獲取不重複隨機數

獲取不重複隨機數

今天重新考慮了一下獲取隨機數的方法;
如果不考慮重複數,那個簡單,就是random一下就行;
如果考慮到去重,那麼現在看可以有兩種大致方向;
第一種就是在獲取的結果集上進行去重,
第二種就是在資料來源頭上刪除已經獲取的數字;
第一種:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
/*
* 自己寫的實現四個隨機數
* 相比其他演算法簡單。 運用了 泛型 和 while迴圈;
*/
public class demo2 {

public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    Random r = new Random();            
        while(list.size()<4){
        int num = r.nextInt(10);
        if(!list.contains(num)){            
            list.add(num);          
       } 
        }
        for(int a : list){
            System.out.print(a+" ");
        }


}

}

第二種:
public class demo3 {

 /**
 * 獲取n個隨機數
 * @param count 隨機數個數
 * @return
 */
public String game(int count){
    StringBuffer sb = new StringBuffer();
    String str = "0123456789";
    Random r = new Random();
    for(int i=0;i<count;i++){
        int num = r.nextInt(str.length());
        sb.append(str.charAt(num));
        str = str.replace((str.charAt(num)+""), "");
        System.out.println(str);
    }
    return sb.toString();
}

public static void main(String[] args) {
    demo3 t = new demo3();
    System.out.println(t.game(4));
}

}

新手可以參考一下。