两个变量之间的Java随机数.需要正数和负数



我正试图根据存储在int变量中的y最小值和最大值以及x上界和下界,在矩形中获得随机点。

我遵循了关于stackoverflow的几个建议,包括下面列出的答案:如何获得负数在范围内的随机数?

即使用以下公式:int number = random.nextInt(max - min) + min;

但当我在自己的代码中实现时,我仍然只得到正值

System.out.println("y Maximum: " + ymax);
System.out.println("y Minimum: " + ymin);
System.out.println("x Upper Bound: " + xupperb);
System.out.println("x Lower Bount: " + xlowerb);
for (int i = 0; i <= 10; i++) {
xp = rd.nextInt(((xupperb) - (xlowerb)) + (xlowerb));
yp = rd.nextInt((ymax + 1) - (ymin - 1) + ymin);
System.out.println("Iteration: " + i);
System.out.println("xp: " + xp);
System.out.println("yp: " + yp);
if (xp > maxxp) {
System.out.println("tNew Max xp: " + xp);
}
if (xp < minxp) {
System.out.println("tNew Min xp: " + xp);
}
if (yp > maxyp) {
System.out.println("tNew Max yp: " + yp);
}
if (yp < minyp) {
System.out.println("tNew Max yp: " + yp);
}
}
y Maximum: 1011
y Minimum: -528
x Upper Bound: 10
x Lower Bount: -10
Iteration: 0
xp: 2
yp: 180
New Max xp: 2
New Max yp: 180
Iteration: 1
xp: 1
yp: 588
New Max xp: 1
New Max yp: 588
Iteration: 2
xp: 7
yp: 30
New Max xp: 7
New Max yp: 30
Iteration: 3
xp: 9
yp: 392
New Max xp: 9
New Max yp: 392
Iteration: 4
xp: 6
yp: 436
New Max xp: 6
New Max yp: 436
Iteration: 5
xp: 1
yp: 179
New Max xp: 1
New Max yp: 179
Iteration: 6
xp: 6
yp: 599
New Max xp: 6
New Max yp: 599
Iteration: 7
xp: 2
yp: 623
New Max xp: 2
New Max yp: 623
Iteration: 8
xp: 6
yp: 560
New Max xp: 6
New Max yp: 560
Iteration: 9
xp: 6
yp: 130
New Max xp: 6
New Max yp: 130
Iteration: 10
xp: 7
yp: 627
New Max xp: 7
New Max yp: 627

如有任何帮助,我们将不胜感激!

代码中的括号放置不正确。以下内容符合您的意图:

xp = rd.nextInt(xupperb) - xlowerb) + xlowerb;
yp = rd.nextInt((ymax + 1) - (ymin - 1)) + ymin; // or ... '+ (ymin -1)' ?

yp值将从ymin开始,而不是从ymin - 1开始,这可能不是您想要的

xp = rd.nextInt(((xupperb) - (xlowerb)) + (xlowerb));

应该成为

xp = rd.nextInt(xupperb - xlowerb) + xlowerb;

最新更新