我试图弄清楚如何最好地生成-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);
答案 0 :(得分:2)
您在问题中陈述
random.nextInt(max + 1 - min) + min
但是,您使用max == 1
和min == -1
编写了
random.nextInt((max + 1 - min) + min)
将最后的-1
移出括号。
int xRand = random.nextInt(1 + 1 + 1) - 1;
(并考虑使用名为min
和max
的变量,而不是魔术数字,以后再回到此代码时您将不知道它们的含义。)
答案 1 :(得分:-1)
0
random.nextInt(1 + 1 + 1) - 1
将生成一个0到2之间的随机整数(以mod 3为例)
添加random.nextInt(1 + 1 + 1)
会导致它生成从-1到1