如果我们需要取一个介于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 这几个包,其它的包就尽力吧。
本文探讨了在Java中生成介于0与n之间的随机数的正确方法,对比了自定义实现与使用标准库的不同效果,强调了利用标准库的重要性。

被折叠的 条评论
为什么被折叠?



