领测软件测试网
软件测试技术网P'u0L&z@wQ
a 软件测试技术网s.[]u~
G0K,O^
hW*J{)Y"{最后,也可能是最糟糕的:随机数不是均匀分布。如果你执行了上述的两段代码,第一段代码的结果将会大于715,000,000,考虑到数值范围的中点(midpoint)是715,827,882,所以这是一个可以接受的结果。然而,你会吃惊的发现第二段代码得到的平均值肯定不会超过600,000,000。
软件测试技术网4xCA,SR%C:u1nb3]ykqI^*j为何第二段代码的结果会如此的偏差?纠其本质,问题出在数值分布的不均匀。当你进行取模运算时,你将过大的数转换成了较小的。这使得较小的数更容易产生。
K
~X2RfsEF软件测试技术网W;XM;_9z8p使用nextInt(range)将会解决上述的三个问题。
软件测试技术网Jeu0]a0[5}'^GB软件测试技术网
JP*\dRyz还有一种随机数生成方法——使用Math.random()。这个方法的效果如何?
hYY]e软件测试技术网N[fg@Y'?.Usum = 0;
"Y&^g2S%S2u/C Mj7@for (int i=0; i<count; i++) {
软件测试技术网/@"d!k