java se 随机数。生成

public class test {

    public static void main(String[] args) {
        
        getRandomNum1();
        getRandomNum2();
        getRandomNum3();
        getRandomNum4();
        getRandomNum5();
    }

    /**
     * 对数组里面的数字进行循环判断,如果有不做处理,继续循环。没有就添加。
     */
    private static void getRandomNum1() {
        int [] arr = new int[5];  
        int count = 0;  
        while(count < 5) {  
            int num = (int) (Math.random() * (10)) ;  
            boolean flag = true;  
            for (int j = 0; j < 5; j++) {  
                if(num == arr[j]){  
                    flag = false;  
                    break;  
                }  
            }  
            if(flag){  
                arr[count] = num;  
                count++;  
            }  
        }  
       System.out.println("随机数1:"+Arrays.toString(arr));
    }
    /**
     * 判断是否存在。不在就添加,在就不处理。继续循环
     */
    private static void getRandomNum2() {
        List list = new ArrayList();
        while(list.size() < 5) {  
            int num = (int) (Math.random() * (10)) ;  
            if(!list.contains(num)) {
                list.add(num);
            }
        }  
       System.out.println("随机数2:"+Arrays.toString(list.toArray()));
    }
    /**
     * 利用set特性.自动去重
     */
    private static void getRandomNum3() {
        Set set = new TreeSet<>();
        while(set.size() < 5) {  
            int num = (int) (Math.random() * (10)) ;  
            set.add(num);
        }  
       System.out.println("随机数3:"+Arrays.toString(set.toArray()));
    }
    
    /**
     * 利用map特性做空判断
     */
    private static void getRandomNum4() {
        Map map = new HashMap<>();
        while(map.size() < 5) {  
            int num = (int) (Math.random() * (10)) ;  
            if(map.get(num) == null ) {
                map.put(num,num);
            }
        }  
       System.out.println("随机数4:"+map.values());
    }
    /**
     * 批量生成随机数,取随机的5个
     */
    private static void getRandomNum5() {
        int[] arrs = new int[20];   
        for (int i = 0; i < arrs.length; i++) {  
            arrs[i] = i ;
        }  
        int[] arr = new int[5];  
        boolean[] flag = new boolean[arrs.length];  
        Random random=new Random();  
        int j = 0;
        for (int i = 0; i < arr.length; i++) {  
            do {  
                j = random.nextInt(flag.length);  
            } while (flag[j]);  //标记,如果取出来过就继续do while 只有不符合while才会继续
            flag[j] = true; 
            arr[i]=arrs[j];  
        } 
        System.out.println("随机数5:"+Arrays.toString(arr));
    }
}

猜你喜欢

转载自www.cnblogs.com/1-Admin/p/9199400.html