no-image

隨機數去重

                                    

/** 
 * 隨機指定範圍內N個不重複的數 
 * 最簡單最基本的方法 
 * @param min 指定範圍最小值 
 * @param max 指定範圍最大值 
 * @param n 隨機數個數 
 */  
public static int[] randomCommon(int min, int max, int n){  
    if (n > (max - min   1) || max < min) {  
           return null;  
       }  
    int[] result = new int[n];  
    int count = 0;  
    while(count < n) {  
        int num = (int) (Math.random() * (max - min))   min;  
        boolean flag = true;  
        for (int j = 0; j < n; j  ) {  
            if(num == result[j]){  
                flag = false;  
                break;  
            }  
        }  
        if(flag){  
            result[count] = num;  
            count  ;  
        }  
    }  
    return result;  
}  
public static void main(String []args) {
		int[] result = randomCommon(100000,100010,10);
       	for(int i = 0;i<result.length;i  ){
			System.out.println(result[i]);
		}
		
    }

/** 
 * 隨機指定範圍內N個不重複的數 
 * 利用HashSet的特徵,只能存放不同的值 
 * @param min 指定範圍最小值 
 * @param max 指定範圍最大值 
 * @param n 隨機數個數 
 * @param HashSet<Integer> set 隨機數結果集 
 */  
   public static void randomSet(int min, int max, int n, HashSet<Integer> set) {  
       if (n > (max - min   1) || max < min) {  
           return;  
       }  
       for (int i = 0; i < n; i  ) {  
           // 呼叫Math.random()方法  
           int num = (int) (Math.random() * (max - min))   min;  
           set.add(num);// 將不同的數存入HashSet中  
       }  
       int setSize = set.size();  
       // 如果存入的數小於指定生成的個數,則呼叫遞迴再生成剩餘個數的隨機數,如此迴圈,直到達到指定大小  
       if (setSize < n) {  
        randomSet(min, max, n - setSize, set);// 遞迴  
       }  
   }  
public static void main(String []args) {
        HashSet<Integer> set = new HashSet<Integer>();
	randomSet(20,50,10,set);  
        for (int j : set) {  
            System.out.println(j);  
        }  
}  


(adsbygoogle = window.adsbygoogle || []).push({});

function googleAdJSAtOnload() {
var element = document.createElement(“script”);
element.src = “//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js”;
element.async = true;
document.body.appendChild(element);
}
if (window.addEventListener) {
window.addEventListener(“load”, googleAdJSAtOnload, false);
} else if (window.attachEvent) {
window.attachEvent(“onload”, googleAdJSAtOnload);
} else {
window.onload = googleAdJSAtOnload;
}