生成随机数方法解析

//冒泡排序
    public static void bubbleSort(int[] a) {
        int temp;
        for (int i = 0; i < a.length - 1; ++i) {
            for (int j = a.length - 1; j > i; --j) {
                if (a[j] < a[j - 1]) {
                    temp = a[j];
                    a[j] = a[j - 1];
                    a[j - 1] = temp;
                }
            }
        }

    }

    /**
     * 随机指定范围内N个不重复的数
     * 最简单最基本的方法,两重循环去重
     * @param min 指定范围最小值
     * @param max 指定范围最大值
     * @param n 生成随机数的个数
     */
    public static int[] randomCommon(int min, int max, int n){
        if (n > (max - min + 1) || max < min) {//判断生成的个数不要大于总数,或者max < min
            return null;
        }
        int[] result = new int[n];//最终需要的那个数组
        int count = 0;//加个标记,count < n的时候说明生成的数还不够,就继续循环
        while(count < n) {
            //int num = (int) (Math.random() * (max - min)) + min;//生成一个随机数,这样取不到最大值,因为强转int,直接舍去小数了
            long aa=Math.round(Math.random() * (max - min));//先四舍五入
            int num = (int) (aa) + min;//生成一个随机数
            boolean flag = true;
            for (int j = 0; j < n; j++) {//这个循环就是拿生成的随机数和已经生成的数比较,看看是不是重复了
                if(num == result[j]){//num == result[j]就是生成重复了,然后break,继续while循环
                    flag = false;
                    break;
                }
            }
            if(flag){//如果不重复,存到数组
                result[count] = num;
                count++;
            }
        }
        bubbleSort(result);//排序一下
        return result;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值