Java中随机数生成是等概率的吗?
Mar 17, 2011 Java
今天群里面问了一个问题:
Java里的随机数生成是等概率的吗?
例如:下面这两行代码将从0-99之间随机生成一个数
1 | java.util.Random ran = new java.util.Random(); |
问:生成0-99之间任意一个数字的概率是相等的吗?
没怎么用过Random类,于是乎随意的浏览了一下Random类和nextInt()方法源代码,无奈水平有限,短时间内无法参透其中的奥秘啊。所以来了一个快速验证的方法,统计学中不是说过随机事件的概率,一般可以通过大量重复试验求得其近似值么。于是乎,我也通过大量重复试验来求求其概率吧。
代码如下:
1 | java.util.Random ran = new java.util.Random(); |
截一小段结果:
0: 99127
1: 99941
2: 100295
3: 100187
4: 100255
5: 100266
6: 100280
7: 99840
8: 100466
9: 99616
10: 100016
剩下的90个数出现的频率和上面的基本一致,大约为10万次。通过上面的实验,基本可以确定为随机数生成是等概率的