街道网格中的醉汉随机选择四个方向之一并跌跌撞撞地走到下一个十字路口,然后再次随机选择四个方向之一,依此类推。你可能会认为酒鬼平均不会移动很远,因为选择相互抵消,但事实并非如此。将位置表示为整数对 (x,y)。实现醉汉走过 100 个十字路口,从 (0,0) 开始并打印结束位置
任何人都可以帮忙吗?在同一个程序中使用随机生成器和循环我完全迷失了
下面是我所拥有的。它符合要求,但不打印任何东西,我不确定我是否得到了随机的 100 个交叉点
import java.util.*;
class Drunkard {
int x, y;
Drunkard(int x, int y) {
this.x = x;
this.y = y;
}
void moveNorth() {
this.y -= 1;
}
void moveEast() {
this.x += 1;
}
void report() {
System.out.println("Hiccup: " + x + ", " + y);
}
}
class Four {
public static void main(String[] args) {
Random generator = new Random();
Drunkard drunkard = new Drunkard(100, 100);
int direction;
for (int i = 0; i < 100; i++) {
direction = Math.abs(generator.nextInt()) % 4;
if (direction == 0) { // N
drunkard.moveNorth();
} else if (direction == 1) { // E
drunkard.moveEast();
} else if (direction == 2) { // S
System.out.println("Should move South.");
} else if (direction == 3) { // W
System.out.println("Should move West.");
} else {
System.out.println("Impossible!");
}
System.out.drunkard.report();
}
}
}