int randomWithRange(int min, int max)
{
int range = (max - min) + 1;
return (int)(Math.random() * range) + min;
}
随机生成函数 randomWithRange(2, 5)
的结果,共10次:
5
2
3
3
2
4
4
4
5
4
这些边界是包含的,即 [2,5],并且在上面的示例中,min
必须小于 max
。
编辑:如果有人想要愚蠢地颠倒 min
和 max
,那么可以更改代码如下:
int randomWithRange(int min, int max)
{
int range = Math.abs(max - min) + 1;
return (int)(Math.random() * range) + (min <= max ? min : max);
}
编辑2: 关于您对于 double
的问题,答案就是:
double randomWithRange(double min, double max)
{
double range = (max - min);
return (Math.random() * range) + min;
}
而且,如果你想要让它更加傻瓜化,只需要这样做:
double randomWithRange(double min, double max)
{
double range = Math.abs(max - min);
return (Math.random() * range) + (min <= max ? min : max);
}
(int)Math.floor(Math.random()*3) + 3
- good_eveningMath.ceil
是错误的,当Math.random()
返回0
时,它会给出错误的结果。 - starblue