【发布时间】:2020-04-28 23:57:36
【问题描述】:
我正在尝试根据 y 最小值和最大值以及 x 上限和下限来获取矩形中的随机点,这些都存储在 int 变量中。
我遵循了一些关于 stackoverflow 的建议,包括此处列出的答案: How to get random number with negative number in range?
也就是使用这个公式:
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
任何帮助将不胜感激!
【问题讨论】:
-
您想要
int number = random.nextInt(max - min) + min;,但您当前的代码是int number = random.nextInt((max - min) + min);- 这不是您想要的。 -
rd.nextInt((ymax + 1) - (ymin - 1) + ymin)检查你的括号,尤其是最后一个ymin。
标签: java