例如,如果我要生成5到50之间的随机数,我知道我可以将代码编写为:
ranNum = (int)Math.random()*(50-5+1)+5;
或
ranNum = Math.round(Math.random()*(50-5))+5;
就生成随机数的过程而言,两者之间有什么区别?哪个会更快?
答案 0 :(得分:7)
速度在这里并不重要。
ranNum = (int)Math.random()*(50-5+1)+5;
这会产生一个5到50之间的随机数,其中每个数字都有相同的发生几率。
ranNum = Math.round(Math.random()*(50-5))+5;
这产生5到50之间的随机数,然而5和50的出现几率是其他的一半,即在ronding值必须<0之前。 5.5得到5和&gt; = 49.5得到50。
注意:两者都不是在范围内生成随机数的最快方法。
int n = random.nextInt(50 - 5 + 1) + 5;
这更快,因为它使用较少的随机位。