编写一个名为randomWalk的方法,该方法执行随机的一维步行,报告到达的每个位置以及步行期间到达的最大位置。随机游走应从位置0开始。在每一步中,您应该将位置增加或减少1(概率相等)。当3或-3被击中时,步行停止。输出应如下所示:
position = 0
position = 1
position = 0
position = -1
position = -2
position = -1
position = -2
position = -3
max position = 1
我的代码:
public static void randomWalk() {
Random rand = new Random();
int position = 0;
int max = 0;
System.out.println("position = " + position);
while (position != 3 && position != -3) {
int randomNumber = rand.nextInt(2) * 2 - 1;
position = position - randomNumber; //why the minus?
max = Math.max(max , position);
System.out.println("position = " + position);
}
System.out.println("max position = " + max);
}
答案 0 :(得分:0)
我最初有加号而不是减号,3输出4输出不正确(附图像)。是与输出控制台有关还是我的代码错了?
"不正确",给出了我们知道的要求。 max
变量跟踪达到的最大值。它不可避免地是一个正数。在达到-3退出条件之前达到的最高正数为1。
无论正负randomNumber
如何,您的实施都同样有效。只是步行的方向将被翻转,这就是全部。您可以通过使用种子初始化Random
实例(例如new Random(1)
)来轻松观察此情况,然后尝试使用加号和减号运行。其中一个将达到3,另一个-3将在每一步都采用相反的方向。
在第二次阅读时,我现在看到你可能通过某种判断系统运行程序,并且通过"错误的",你的意思是打印的值与什么相反?这个法官所期待的。由于我上面解释的原因,更改加号减号会修复这个问题。无论您使用哪个标志,我都不认为您的程序不正确。使用特定符号的隐藏要求是不合理和不自然的,因为无论你的加减是否与随机游走原则无关。