一尘不染

Java Math.random()解释

java

这是一个非常简单的Java(尽管可能适用于所有编程)问题:

Math.random()返回介于零和一之间的数字。

如果我想返回零到一百之间的整数,我会这样做:

(int) Math.floor(Math.random() * 101)

在一百到一百之间,我会做:

(int) Math.ceil(Math.random() * 100)

但是,如果我想得到三到五之间的数字怎么办?它会像下面的语句:

(int) Math.random() * 5 + 3

我知道nextInt()java.lang.util.Random。但是我想学习如何使用Math.random()


阅读 643

收藏
2020-02-29

共1个答案

一尘不染

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);
}

EDIT2:关于doubles 的问题,只是:

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);
}
2020-02-29