输出不正确 - 为什么?

时间:2016-11-04 06:46:39

标签: java

编写一个名为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);
}

我最初有加号而不是减号,3输出4输出不正确(附图像)。是与输出控制台有关还是我的代码出错? With minus sign

With plus sign

1 个答案:

答案 0 :(得分:0)

  

我最初有加号而不是减号,3输出4输出不正确(附图像)。是与输出控制台有关还是我的代码错了?

"不正确",给出了我们知道的要求。 max变量跟踪达到的最大值。它不可避免地是一个正数。在达到-3退出条件之前达到的最高正数为1。

无论正负randomNumber如何,您的实施都同样有效。只是步行的方向将被翻转,这就是全部。您可以通过使用种子初始化Random实例(例如new Random(1))来轻松观察此情况,然后尝试使用加号和减号运行。其中一个将达到3,另一个-3将在每一步都采用相反的方向。

在第二次阅读时,我现在看到你可能通过某种判断系统运行程序,并且通过"错误的",你的意思是打印的值与什么相反?这个法官所期待的。由于我上面解释的原因,更改加号减号会修复这个问题。无论您使用哪个标志,我都不认为您的程序不正确。使用特定符号的隐藏要求是不合理和不自然的,因为无论你的加减是否与随机游走原则无关。