java - 三维自回避随机游走的死胡同概率为零?
问题描述
这是 Sedgewick & Wayne 练习 1.4.35。
运行实验以验证3 维自动回避行走的死胡同概率为 0。
这是我的程序:
public class test
{
public static void main(String[] args)
{
int n = Integer.parseInt(args[0]);
int trials = Integer.parseInt(args[1]);
int deadEnds = 0;
for (int t = 1; t <= trials; t++)
{
boolean[][][] a = new boolean[n][n][n];
int x = n/2, y = n/2, z = n/2;
while (x > 0 && x < n-1 && y > 0 && y < n-1 && z > 0 && z < n-1)
{
a[x][y][z] = true;
if (a[x+1][y][z] && a[x-1][y][z] && a[x][y+1][z] && a[x][y-1][z] &&
a[x][y][z+1] && a[x][y][z-1])
{
deadEnds++;
break;
}
double r = Math.random();
if (r < 1.0/6) {if (!a[x+1][y][z]) x++;}
else if (r < 2.0/6) {if (!a[x-1][y][z]) x--;}
else if (r < 3.0/6) {if (!a[x][y+1][z]) y++;}
else if (r < 4.0/6) {if (!a[x][y-1][z]) y--;}
else if (r < 5.0/6) {if (!a[x][y][z+1]) z++;}
else if (r < 1.000) {if (!a[x][y][z-1]) z--;}
}
}
System.out.println((100.0*deadEnds)/trials + "% dead ends.");
}
}
我的问题是,即使对于 100×100×100 的晶格,我也没有得到概率 0。我的程序有什么我看不到的问题吗?
以下是验证练习中上述声明的文本:
先感谢您。
解决方案
推荐阅读
- r - 是否可以在 ggplot 中为没有数据点的 x 轴刻度和标签以仅显示一个 x 轴结果?
- php - 使用 Goutte 抓取网站挂起,直到特定网站超时
- python - 将字符串值插入二维数组/矩阵
- sql - MariaDB 本地 UTC 时间更新
- json - 正确配置 Windows 的默认控制台窗口以修复有限的默认回滚
- javascript - JS promise 完成后的返回值
- python - 如何从数据框中绘制折线图上的最大 Y 值
- python - 尝试在 Python 套接字中将数据从服务器发送到客户端时出现管道损坏错误
- flutter - Flutter Web 中的 SelectableText.rich
- javascript - Mongoose 返回所有数组数据