第四十七条 了解和使用类库

本文探讨了在Java中生成介于0与n之间的随机数的正确方法,对比了自定义实现与使用标准库的不同效果,强调了利用标准库的重要性。

如果我们需要取一个介于0与n之间的随机数,如果我们自己写的话,借助Random工具,可以

    private final static Random mRandom = new Random();

    static int random(int n){
        return Math.abs(mRandom.nextInt()) % n;
    }

测试一下,看看方法获取随机数的效果如何

    static void test(){
        int n = 2 * (Integer.MAX_VALUE / 3);
        int low = 0;
        for(int i=0; i < 1000000; i++){
            if(random(n) < n/2){
                low++;
            }
        }
        System.out.println(low);
    }

结果,打印数据为 665850,我们看上述代码,选定一个n,n的大小为int类型最大值的2/3,统计的low的数据是小于n的一般值的数据的个数,结果发现,有将近一多半都落在了前半部。这个明显需要修正,但这里面又牵涉一些数学知识,我们不一定清楚,所以如果有专业的方法,我们直接调用即可,根本不用自己耗时耗力的去做,幸运的是,random提供了这样的api,

    static int random(int n){
        return Math.abs(mRandom.nextInt(n));
    }

替换后,打印的low 数据为 499844 ,已经相当接近一半了,比着上面自己封装的要好得多。

使用标准类库,可以充分利用专家的知识,使用他人的经验;不必浪费时间,提高效率;标准库会不停的优化,我们不必做任何操作,坐享其成;大家都使用标准类库,我们可以随大流,不会遭到较大的遭难,用的人越多,解决的越快。对于工具类的和其他的标准类库,我们没必要自己去造轮子,拿来主义就很好。我们平常最好多了解 java.lang,util,io 这几个包,其它的包就尽力吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值