如何获得范围内负数的随机数?

2022-09-03 16:43:08

请考虑以下代码:

int rand = new Random().nextInt((30 - 20) + 1) + 20

它将返回一个介于 30 和 20 之间的随机数。但是,我需要它的范围包括负数。如何在生成中包含负数?

我尝试过使用否定的数学,但这导致了一个错误。简单地减去或添加负数不会产生所需的值。


对不起,我只是半醒。正确的代码是 。int rand = new Random().nextInt((30 - 20) + 1) + 20;


答案 1

要获得一个介于 设置范围与 和 之间的随机数:minmax

int number = random.nextInt(max - min) + min;

它也适用于负数。

所以:

random.nextInt(30 + 10) - 10;
// max = 30; min = -10;

将生成一个介于 -10 和 30 之间的随机整数(不包括)。

它也适用于双打。


答案 2

您可以使用 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);

推荐