【问题标题】:Java random number between two variables. Positive and Negative numbers needed两个变量之间的 Java 随机数。需要正数和负数
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    应该变成

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

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 2013-11-08
      • 2013-12-19
      • 2017-11-20
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多