How to get random number with negative number in range?
请考虑以下代码:
1
| int rand = new Random(). nextInt((30 - 20) + 1) + 20 |
它将返回30到20之间的随机数。但是,我需要它的范围包括负数。 我如何在这一代中包含负数? 我尝试过使用数学会产生负面影响,但这会导致错误。 简单地减去或添加负数不会产生所需的值。
编辑:对不起,我只是半醒。 正确的代码是int rand = new Random().nextInt((30 - 20) + 1) + 20;。
-
"它会返回30到20之间的随机数" - 不...
-
@alfasin我会说同样的话。 另外,OP你想要的数字范围是多少?
-
我向你们保证(30 - 20) + 1只是11。
-
@ PM77-1除了,在这种情况下,当它是11(不包括)或10(包括在内)时。
-
简单地减去或添加负数不会产生所需的值。 从技术上讲,它产生了一个理想的范围。 什么是期望的范围?
-
30 - -10。 我正在尝试制作一个生存模拟器。 那将是我的温度。
-
可能重复如何在Java中生成特定范围内的随机整数?
要在min和max的设定范围之间获取随机数:
1
| int number = random.nextInt(max - min) + min; |
也适用于负数
所以:
1 2
| random.nextInt(30 + 10) - 10;
// max = 30; min = -10; |
将产生-10到30之间的随机int。(独家)
也适用于双打
您可以使用Random.nextBoolean()来确定它是一个随机的正数还是负数。
1 2 3
| int 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实例,但举个例子
1
| int rand = -15 + new Random(). nextInt(31); |
是-15到15的范围。Random.nextInt(int) JavaDoc说(部分)返回伪随机,在0(包括)和指定值(不包括)之间均匀分布的int值。请注意,您提供的(30 - 20) + 1示例的范围是0到10(含)。
编辑
作为另一个例子,你可以得到20到30的范围
1
| int rand = 20 + new Random(). nextInt(11); |
请记住,结果的范围是0到n。
编辑2
30 - -10. I'm trying to make a survival simulator. That will be my temperature.
好。让我们将该范围写为-10到30。 nextInt(n)将返回0和n之间的值,因此如果您希望范围低于0,则必须从结果中减去10并将10添加到n。那是
1 2
| Random random = new Random();
int rand = random. nextInt(41) - 10; |
现在让我们来看看如何确定这些数字。请记住,nextInt()将在0和n之间返回(不包括),我们希望-10到30(包括);所以41是n,我们减去10。如果结果是0(最小值),我们得到-10,如果结果是40(最大值),我们得到30。
1
| int randomNumber=(random.nextInt(DOUBLE_MAX)-MAX); |
或者,创建一个随机的正面或负面1并将其相乘。