[算法]随机取指定范围内N个不重复的数

public class NumberUtil {

    public static void main(String[] args) {
        //0-10之内,随机取五个数
        List integers = randomCommon(0,10,5);
        if(integers!=null&&integers.size()!=0){
            for(int i : integers){
                System.out.println(i);
            }
        }else{
            System.out.println("kong");
        }
    }

    /**
     * 随机指定范围内N个不重复的数 
     * @param min 指定范围最小值 
     * @param max 指定范围最大值 
     * @param n   随机数个数 
     * @return
     */
    public static List randomCommon(int min , int max , int n){
        List integers = new ArrayList();
        if(min < 0){
            min = 0;
        }
        if((max-min)+1 < n){
            n = (max-min)+1;
        }
        if(max < min){
            max = min;
        }
        if( max<0 || n<0 ){
            return integers;
        }
        for(int i = 1 ; i <= n ; i++){
            int randomNumber = (int) Math.round(Math.random()*(max-min)+min);  
            if(integers.contains(randomNumber)){
                i--;
                continue;
            }else{
                integers.add(randomNumber);
            }
        }
        return integers;
    }
}

你可能感兴趣的:(算法)