如何获得范围内为负数的随机数?
How do I get a random number with a negative number in range?
考虑以下代码:
int rand = new Random().nextInt((30 - 20) + 1) + 20
它将 return 一个介于 30 和 20 之间的随机数。但是,我需要它的范围包括负数。我如何在生成中包含负数?
我曾尝试使用可能为负的数学运算,但这导致了错误。简单地减去或添加负数不会产生所需的值。
对不起,我才半醒。正确的代码是 int rand = new Random().nextInt((30 - 20) + 1) + 20;
.
好的。首先,尝试只创建一次 Random
实例,但举个例子,
int rand = -15 + new Random().nextInt(31);
是-15到15的范围。
Random.nextInt(int)
JavaDoc 说(部分)Returns 伪随机,均匀分布在 0(含)和指定值(不含)之间的 int 值.请注意,您提供的 (30 - 20) + 1
示例是 0 到 10(含)范围。
再举一个例子,要获得 20 到 30 的范围,您可以使用:
int rand = 20 + new Random().nextInt(11);
记住,结果的范围是 0 到 n
。
30 - -10. I'm trying to make a survival simulator. That will be my temperature.
好的。我们将该范围写为 -10
到 30
。 nextInt(n)
将 return 介于 0
和 n
之间的值,因此如果您希望范围小于 0,则必须从结果中减去 10
并添加 10
到 n
。那是
Random random = new Random();
int rand = random.nextInt(41) - 10;
现在让我们来看看如何确定这些数字。请记住,nextInt()
将 return 在 0
和 n
(不含)之间,我们希望 -10
到 30
(含);所以 41
是 n
我们减去 10
。如果结果是 0
(最小值),我们得到 -10
,如果结果是 40
(最大值),我们得到 30
.
int randomNumber=(random.nextInt(DOUBLE_MAX)-MAX);
或者,创建一个随机的正数或负数 1 并将其相乘。
您可以使用 Random.nextBoolean() 来确定它是随机正整数还是负整数。
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);
要在 min
和 max
的设定范围内获取随机数:
int number = random.nextInt(max - min) + min;
它也适用于负数。
所以:
random.nextInt(30 + 10) - 10;
// max = 30; min = -10;
将产生一个介于 -10 和 30(不含)之间的随机整数。
它也适用于双打。
考虑以下代码:
int rand = new Random().nextInt((30 - 20) + 1) + 20
它将 return 一个介于 30 和 20 之间的随机数。但是,我需要它的范围包括负数。我如何在生成中包含负数?
我曾尝试使用可能为负的数学运算,但这导致了错误。简单地减去或添加负数不会产生所需的值。
对不起,我才半醒。正确的代码是 int rand = new Random().nextInt((30 - 20) + 1) + 20;
.
好的。首先,尝试只创建一次 Random
实例,但举个例子,
int rand = -15 + new Random().nextInt(31);
是-15到15的范围。
Random.nextInt(int)
JavaDoc 说(部分)Returns 伪随机,均匀分布在 0(含)和指定值(不含)之间的 int 值.请注意,您提供的 (30 - 20) + 1
示例是 0 到 10(含)范围。
再举一个例子,要获得 20 到 30 的范围,您可以使用:
int rand = 20 + new Random().nextInt(11);
记住,结果的范围是 0 到 n
。
30 - -10. I'm trying to make a survival simulator. That will be my temperature.
好的。我们将该范围写为 -10
到 30
。 nextInt(n)
将 return 介于 0
和 n
之间的值,因此如果您希望范围小于 0,则必须从结果中减去 10
并添加 10
到 n
。那是
Random random = new Random();
int rand = random.nextInt(41) - 10;
现在让我们来看看如何确定这些数字。请记住,nextInt()
将 return 在 0
和 n
(不含)之间,我们希望 -10
到 30
(含);所以 41
是 n
我们减去 10
。如果结果是 0
(最小值),我们得到 -10
,如果结果是 40
(最大值),我们得到 30
.
int randomNumber=(random.nextInt(DOUBLE_MAX)-MAX);
或者,创建一个随机的正数或负数 1 并将其相乘。
您可以使用 Random.nextBoolean() 来确定它是随机正整数还是负整数。
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);
要在 min
和 max
的设定范围内获取随机数:
int number = random.nextInt(max - min) + min;
它也适用于负数。
所以:
random.nextInt(30 + 10) - 10;
// max = 30; min = -10;
将产生一个介于 -10 和 30(不含)之间的随机整数。
它也适用于双打。