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

Caf*_*ode 3 java random

请考虑以下代码:

int rand = new Random().nextInt((30 - 20) + 1) + 20
Run Code Online (Sandbox Code Playgroud)

它将返回30到20之间的随机数.但是,我需要它的范围包括负数.我如何在这一代中包含负数?我尝试过使用数学会产生负面影响,但这会导致错误.简单地减去或添加负数不会产生所需的值.

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

JCl*_*sic 16

使用min和获取设定范围之间的随机数max:

int number = random.nextInt(max - min) + min; 
Run Code Online (Sandbox Code Playgroud)

也适用于负数

所以:

random.nextInt(30 + 10) - 10;
// max = 30; min = -10;
Run Code Online (Sandbox Code Playgroud)

将产生-10到30之间的随机int.(包括)

也适用于双打


Ken*_*nyC 10

您可以使用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);
Run Code Online (Sandbox Code Playgroud)