无法在Java中生成随机的-1至+1

时间:2019-01-02 16:47:19

标签: java random

我试图弄清楚如何最好地生成-1和1之间的随机数。我认为这是下面的公式,但是我的输出始终为0和1s,没有负数。

random.nextInt(max + 1 - min) + min

这是实际的代码:

int xRand = random.nextInt((1 + 1 + 1) - 1);
int yRand = random.nextInt((1 + 1 + 1) - 1);

System.out.println("x: " + xRand);
System.out.println("y: " + yRand);

2 个答案:

答案 0 :(得分:2)

您在问题中陈述

random.nextInt(max + 1 - min) + min

但是,您使用max == 1min == -1编写了

random.nextInt((max + 1 - min) + min)

将最后的-1移出括号。

int xRand = random.nextInt(1 + 1 + 1) - 1;

(并考虑使用名为minmax的变量,而不是魔术数字,以后再回到此代码时您将不知道它们的含义。)

答案 1 :(得分:-1)

0

random.nextInt(1 + 1 + 1) - 1将生成一个0到2之间的随机整数(以mod 3为例)

添加random.nextInt(1 + 1 + 1)会导致它生成从-1到1