考虑以下代码:
int rand = new Random().nextInt((30 - 20) + 1) + 20
它将返回一个介于30到20之间的随机数。然而,我需要它的范围包括负数。如何在生成中包含负数?
我尝试使用可能为负数的数学方法,但结果出现错误。简单地加减负数也不能得到所需的值。
抱歉,我还没完全清醒。正确的代码是 int rand = new Random().nextInt((30 - (-20)) + 1) + (-20);
。
要在一定范围内取得一个随机数,该范围由 min
和 max
决定:
int number = random.nextInt(max - min) + min;
它也可以处理负数。
所以:
random.nextInt(30 + 10) - 10;
// max = 30; min = -10;
将产生一个介于-10和30之间(不包括)的随机整数。
它也适用于双精度浮点数。
max-min
大于Integer.MAX_VALUE
时,无法正常工作。 - awwsmmint MAX = 30;
Random random = new Random(); // Optionally, you can specify a seed, e.g. timestamp.
int rand = random.nextInt(MAX) * (random .nextBoolean() ? -1 : 1);
Random
实例,但为了举例说明,int rand = -15 + new Random().nextInt(31);
范围是-15到15。
Random.nextInt(int)
的JavaDoc(部分内容)如下:返回0(包括)和指定值(不包括)之间的伪随机均匀分布的int值。请注意,您提供的示例(30-20)+1
的范围为0到10(包括边界)。
进一步举例,要获取范围在20到30之间的值,您需要使用:
int rand = 20 + new Random().nextInt(11);
请记住,is的结果范围是从0到n
。
30 - -10。我正在尝试制作一个生存模拟器。这将是我的温度。
好的。让我们将该范围写成-10
到30
。 nextInt(n)
将返回介于0
和n
之间的值,因此如果您想要小于0的范围,必须从结果中减去10
并将其添加到n
中的10
。那就是
Random random = new Random();
int rand = random.nextInt(41) - 10;
nextInt()
会返回0
到n
(不包括n
),而我们想要的是-10
到30
(包括两端); 因此41
是n
,我们要减去10
。如果结果是0
(最小值),我们得到-10
,如果结果是40
(最大值),我们得到30
。int randomNumber=(random.nextInt(DOUBLE_MAX)-MAX);
或者,创建一个随机的正数或负数1并将其相乘。
(30-20)+1
就是11
。 - PM 77-111
(排除)或10
(包含)。 - Elliott Frisch