Schreiben Sie eine Methode mit dem Namen randomWalk, die einen zufälligen eindimensionalen Spaziergang durchführt und jede erreichte Position und die während des Laufs erreichte maximale Position meldet. Der Random Walk sollte bei Position 0 beginnen. Bei jedem Schritt sollten Sie die Position entweder um 1 erhöhen oder verringern (mit gleicher Wahrscheinlichkeit). Der Spaziergang stoppt, wenn 3 oder -3 getroffen wird. Die Ausgabe sollte wie folgt aussehen:Falscher Ausgang - Warum?
position = 0
position = 1
position = 0
position = -1
position = -2
position = -1
position = -2
position = -3
max position = 1
Mein Code:
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);
}
Ich hatte zunächst das Pluszeichen statt auf das Minuszeichen, und 3 4 Ausgänge waren falsch (Bild angehängt). Hat es etwas mit der Ausgabekonsole zu tun oder ist mein Code irgendwo falsch?
A + würde dort genauso gut funktionieren ... es ist nicht klar, wie sie eine bestimmte Ausgabe erwarten, wenn Sie Zufallszahlen verwenden. Aber Sie haben uns nicht das * Ende * dieser Ausgabe gezeigt - vielleicht überprüft es wirklich nur die maximale Position? –
Während ich denke, dass Ihre Frage ziemlich vollständig ist, verstehe ich nicht, was mit dem Code falsch ist? Es verringert sich um eins oder erhöht sich um eins, wenn man die Ausgabe beurteilt, also was ist da falsch? – SomeJavaGuy
@KevinEsche Genau mein Problem da, sollte es mit dem + Zeichen gut funktionieren aber trotzdem ist die Ausgabe falsch. Ich weiß nicht, wie sie die Ausgabe überprüfen, da es sich um Zufallszahlen handelt. –