무작위 1 차원 보행을 수행하는 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 개 출력이 잘못되었습니다 (이미지 첨부)를했다. 출력 콘솔과 관련이 있거나 제 코드가 어딘가 잘못 됐습니까?
A +는 똑같이 잘할 것입니다 ... 난수를 사용할 때 특정 출력을 기대하는 방법이 명확하지 않습니다. 그러나 당신은 우리에게 그 결과물의 * end *를 보여주지 못했습니다 - 아마 그것은 단지 최대 위치를 확인하고있을 것입니다. –
나는 당신의 질문이 꽤 완벽하다고 생각하지만, 코드에 무엇이 잘못된 것인가? 그것은 하나씩 줄어들거나 출력을 판단하여 하나씩 증가합니다. 그래서 거기에 무슨 문제가 있습니까? – SomeJavaGuy
@KevinEsche 정확하게 거기에 내 문제, 그것은 + 기호와 함께 잘 작동해야하지만 여전히 출력이 잘못되었습니다. 나는 그것들이 무작위 수를 다루고 있기 때문에 출력을 어떻게 확인하는지 모른다. –