自回避随机游走 - 编译的程序不会执行

发布于 2025-01-18 19:52:10 字数 1255 浏览 0 评论 0原文

我正在尝试使用Intellij和以下代码运行一个自我避免随机步行程序。但是,该程序在调用后成功地编译了 - 终端使用空白(未重置)进入下一行,而什么也没有打印出来。我也无法调用任何新程序或键入终端。

public class SelfAvoidingRandomWalks {
public static void main(String[] args) {
    int n = Integer.parseInt(args[0]);
    int trials = Integer.parseInt(args[1]);
    int deadEnds = 0;
    for (int t = 0; t < trials; t++) {
        boolean[][] a = new boolean[n][n];
        int x = n / 2, y = n / 2;
        while (x > 0 && x < (n - 1) && y > 0 && y < (n - 1)) ;
        {
            a[x][y] = true;
            if (a[x - 1][y] && a[x + 1][y] && a[x][y - 1] && a[x][y + 1]) {
                deadEnds++;
                break;
            }
            double r = Math.random();
            if (r < 0.25) {
                if (!a[x + 1][y]) x++;
            }
            else if (r < 0.50) {
                if (!a[x - 1][y]) x--;
            }
            else if (r < 0.75) {
                if (!a[x][y + 1]) y++;
            }
            else if (r < 1.00) {
                if (!a[x][y - 1]) y--;
            }
        }
    }
    System.out.println(100 * (deadEnds / trials) + "% dead ends");
    System.out.println(deadEnds);
}

}

I'm trying to run a Self Avoiding Random Walk program using IntelliJ with the code below. The program compiles successfully however, after calling it - the terminal goes to the next line with a blank (doesn't reset) and nothing is printed out. I'm not able to call any new programs or type in the terminal as well.

public class SelfAvoidingRandomWalks {
public static void main(String[] args) {
    int n = Integer.parseInt(args[0]);
    int trials = Integer.parseInt(args[1]);
    int deadEnds = 0;
    for (int t = 0; t < trials; t++) {
        boolean[][] a = new boolean[n][n];
        int x = n / 2, y = n / 2;
        while (x > 0 && x < (n - 1) && y > 0 && y < (n - 1)) ;
        {
            a[x][y] = true;
            if (a[x - 1][y] && a[x + 1][y] && a[x][y - 1] && a[x][y + 1]) {
                deadEnds++;
                break;
            }
            double r = Math.random();
            if (r < 0.25) {
                if (!a[x + 1][y]) x++;
            }
            else if (r < 0.50) {
                if (!a[x - 1][y]) x--;
            }
            else if (r < 0.75) {
                if (!a[x][y + 1]) y++;
            }
            else if (r < 1.00) {
                if (!a[x][y - 1]) y--;
            }
        }
    }
    System.out.println(100 * (deadEnds / trials) + "% dead ends");
    System.out.println(deadEnds);
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文