这两种查找随机数的方法之间的区别?

时间:2016-01-17 14:43:20

标签: java random

例如,如果我要生成5到50之间的随机数,我知道我可以将代码编写为:

ranNum = (int)Math.random()*(50-5+1)+5;

ranNum = Math.round(Math.random()*(50-5))+5;

就生成随机数的过程而言,两者之间有什么区别?哪个会更快?

1 个答案:

答案 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;

这更快,因为它使用较少的随机位。