gpt4 book ai didi

java - 棋盘上的 Ant

转载 作者:行者123 更新时间:2023-12-02 09:06:03 26 4
gpt4 key购买 nike

目前我的程序总是给我4,我怎样才能确定 Ant 走了多少步才能覆盖整个棋盘? Ant 可以上下左右行走,但不能离开棋盘,然后进行 4 次模拟。

public static void main(String args[]) {
int[][] grid = new int[8][8];

int count = 0;
int x = 0;
int y = 0; // arrays are 0 based
while(true)
{
int random = (int)Math.random()*4+1;
if (random == 1)
{
x--; // move left
}
else if (random == 2)
{
x++; // move right
}
else if (random == 3)
{
y--; // move down
}
else if (random == 4)
{
y++; // move up
}
if(x < 0 || y < 0 || x >= grid.length || y >= grid[x].length) break;
count++;
grid[x][y]++;
}
System.out.println("Number of Steps in this simulation: " + count); // number of moves before it fell
}
}

最佳答案

问题是这个表达式:

int random =  (int)Math.random()*4+1;

通过显式强制转换,只有Math.random()已转换为 int 。但自从 Math.random()返回 dobule < 1 ,它被转换为 0因此random总是1并且该方法始终返回 0 .

可以通过强制转换 Math.random() * 4 来解决该问题:

int random = (int) (Math.random() * 4) + 1;

括号强制 Math.random() * 4 的值(这将是区间 [0, 3) 中的值)将被转换为 int .

<小时/>

关于您的代码的两点注释:

  • 我建议引入 enum Direction有四个值(每个方向一个)并随机选择 Direction通过调用 Direction.values()[(int) (Math.random() * 4)];
  • 我建议使用switch而不是 if-else-if级联。

Ideone demo

关于java - 棋盘上的 Ant ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59805045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com