获得随机数

package csdn;

import java.util.Random;

public class randomtest {
	

	
	/** 
	 * 随机指定范围内N个不重复的数 
	 * 在初始化的无重复待选数组中随机产生一个数放入结果中, 
	 * 将待选数组被随机到的数,用待选数组(len-1)下标对应的数替换 
	 * 然后从len-2里随机产生下一个随机数,如此类推 
	 * @param max  指定范围最大值 
	 * @param min  指定范围最小值 
	 * @param n  随机数个数 
	 * @return int[] 随机数结果集 
	 */  
	public static int[] randomArray(int min,int max,int n){  
	    int len = max-min+1;  
	      
	    if(max < min || n > len){  
	        return null;  
	    }  
	      
	    //初始化给定范围的待选数组  
	    int[] source = new int[len];  
	       for (int i = min; i < min+len; i++){  
	        source[i-min] = i;  
	       }  
	         
	       int[] result = new int[n];  
	       Random rd = new Random();  
	       int index = 0;  
	       for (int i = 0; i < result.length; i++) {  
	        //待选数组0到(len-2)随机一个下标  
	           index = Math.abs(rd.nextInt() % len--);  
	           //将随机到的数放入结果集  
	           result[i] = source[index];  
	           //将待选数组中被随机到的数,用待选数组(len-1)下标对应的数替换  
	           source[index] = source[len];  
	       }  
	       return result;  
	}  
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 int[] reult2 = randomArray(20,50,10);  
		    for (int i : reult2) {  
		        System.out.println(i);  
		    }  
	        
	}

}

原文地址:https://www.cnblogs.com/CCCrunner/p/11781832.html