Java 2-D 随机游走仅限于四个方向

标签 java random boolean

我正在编写一个典型的二维随机游走。但是,光标只能在基本方向上移动。我编写此方法是为了测试代码,但它不排除对角线移动(当 x 和 y 值相等时)。这就是我被困住的地方。我可以选择 1 到 4 之间的随机整数并使用嵌套 if,但似乎应该有一种使用 boolean 类型的更简单方法,因为它是一个二元决策。我走在正确的道路上吗?

for (int i = 1; i <= 10; i++) {

    //assume x & y are already initialized       

    Random xmove = new Random();
    Random ymove = new Random();

    // select new x-coord
    if (xmove.nextBoolean()) {
        x += 1;
    } else {
        x += -1;
    }

    // select new y-cord
    if (ymove.nextBoolean()) {
        y += 1;
    } else {
        y += -1;
    }

    System.out.printf("(%d, %d)", x, y);
    System.out.println();         
}

最佳答案

正如你所说,有 4 种可能的移动(x+1、x-1、y+1、y-1),因此决定不是二元的。但是,您也不需要嵌套的 if:只需选择对哪个结果执行哪个操作即可。

if (move == 0) {
    x += 1;
} else if (move == 1) {
    x += -1;
} else if (move == 2) {
    y += 1;
} else {
    y += -1;
}

关于Java 2-D 随机游走仅限于四个方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539266/

相关文章:

javascript - OO Javascript 是否有 `to_bool` 或 `__len__` 等效项?

java - 在不知道 JSON 结构的情况下在 Java 中解析嵌套的 JSON?

c++ - 生成随机体育比赛结果c++

java - 随机数的分布

Python:如何处理?

java - 带有 boolean 值的开关/案例请求

java - 如何在 Eclipse 中查看 java 日志文件

java - Mysql数据导出工具

Java:如何将多个文件附加到电子邮件?

java - 需要在两个值之间生成随机数,忽略给定值