Java 输出不正确-为什么?

Java 输出不正确-为什么?,java,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 我的代码: p

编写一个名为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);
}
我最初使用的是加号而不是减号,4个输出中有3个不正确(附图)。这与输出控制台有关,还是我的代码出了问题?

我最初使用的是加号而不是减号,4个输出中有3个不正确(附图)。这与输出控制台有关,还是我的代码出了问题

鉴于我们所知的要求,这并不是“不正确的”。
max
变量跟踪已达到的最大值。这必然是一个正数。在达到-3退出条件之前,达到的最大正数为1

无论加或减
randomNumber
,您的实现都同样有效。只是走路的方向会被翻转,仅此而已。通过使用种子初始化
Random
实例,例如
newrandom(1)
,然后尝试使用加号和减号运行,可以很容易地观察到这一点。其中一个达到3,另一个达到-3,每一步都朝相反的方向走

在第二次阅读中,我看到现在你可能正在通过某种法官系统运行程序,所谓“不正确”,你的意思是打印的值与法官期望的相反。更改加号和减号可以解决这个问题,原因我在上面解释过。无论你使用哪种符号,我都不认为你的程序是错误的。使用特定符号的隐藏要求是不合理和不自然的,因为根据随机游动的原理,加号或减号都是无关的

我最初使用的是加号而不是减号,4个输出中有3个不正确(附图)。这与输出控制台有关,还是我的代码出了问题

鉴于我们所知的要求,这并不是“不正确的”。
max
变量跟踪已达到的最大值。这必然是一个正数。在达到-3退出条件之前,达到的最大正数为1

无论加或减
randomNumber
,您的实现都同样有效。只是走路的方向会被翻转,仅此而已。通过使用种子初始化
Random
实例,例如
newrandom(1)
,然后尝试使用加号和减号运行,可以很容易地观察到这一点。其中一个达到3,另一个达到-3,每一步都朝相反的方向走


在第二次阅读中,我看到现在你可能正在通过某种法官系统运行程序,所谓“不正确”,你的意思是打印的值与法官期望的相反。更改加号和减号可以解决这个问题,原因我在上面解释过。无论你使用哪种符号,我都不认为你的程序是错误的。使用特定符号的隐藏要求是不合理和不自然的,因为根据随机游动的原理,你是加号还是减号都无关紧要。

a+在这方面也同样适用。。。当您使用随机数时,不清楚他们如何期望特定的输出。但是你还没有告诉我们输出的结尾-也许只是检查最大位置?虽然我认为你的问题很完整,但我不明白代码有什么问题?通过判断输出,它确实减少了一个或增加了一个,那么那里出了什么问题?@KevinEsche这正是我的问题,它应该与+号配合使用,但输出仍然是错误的。我不知道他们是如何检查输出的,因为它是处理随机数的。@TheBolt在我看来,当你用来增加/减少的值是随机的时,有一个预期的输出是没有意义的。(为什么要以-1开头?)是的,很有道理,谢谢!A+在那里也会做得很好。。。当您使用随机数时,不清楚他们如何期望特定的输出。但是你还没有告诉我们输出的结尾-也许只是检查最大位置?虽然我认为你的问题很完整,但我不明白代码有什么问题?通过判断输出,它确实减少了一个或增加了一个,那么那里出了什么问题?@KevinEsche这正是我的问题,它应该与+号配合使用,但输出仍然是错误的。我不知道他们是如何检查输出的,因为它是处理随机数的。@TheBolt在我看来,当你用来增加/减少的值是随机的时,有一个预期的输出是没有意义的。(为什么要以-1开头?)是的,很有道理,谢谢!