Ich versuche ein Programm zu schreiben, das einen zufälligen Weg von einem Mittelpunkt (0,0) 100 Mal nimmt und die durchschnittliche Anzahl der Schritte berechnet. Ich habe den folgenden Code:Java Random Walk Programm?
package randomwalk;
import java.util.Random;
public class RandomWalk {
int x = 0;
int y = 0;
int steps = 0;
Random r = new Random();
public RandomWalk(){
do {
int num = randInt(1,4);
if(num == 1){
this.x+=1;
}
else if(num == 2){
this.x-=1;
}
else if(num == 3){
this.y+=1;
}
else if(num == 4){
this.y-=1;
}
this.steps++;
} while(this.x != 0 || this.y != 0);
}
public int getSteps(){
return this.steps;
}
public static int randInt(int min, int max){
Random r = new Random();
int num = r.nextInt((max-min) + 1) + min;
return num;
}
}
ich auch die Testfunktion haben:
package randomwalk;
public class Test {
public static void main(String args[]){
int total = 0;
for(int i = 0; i<100; i++){
RandomWalk rand = new RandomWalk();
int steps = rand.getSteps();
total+=steps;
}
System.out.println("The average is: " + ((total/2)/100));
}
}
Was mache ich falsch hier? Mein Programm scheint immer unendlich zu laufen und ich bekomme nie einen Rückgabewert. Es läuft einfach weiter. Hilfe ist willkommen!
Von ** Mittelpunkt (0,0) ** wohin? Oder einfach zurück zum ** Mittelpunkt (0,0) **? – Blank
@Reno zurück zum Mittelpunkt –
Jetzt sind wir klar, eigentlich läuft es immer unendlich, diese Schleife wollen Sie, wenn 'this.x == 0' und' this.y == 0', Schleife bricht, aber diese Bedingung ist ziemlich kritisch und diese Schleife wird sogar 100 mal tun. Wir können nicht vorhersagen, was 'Random' zu uns zurückkehrt. Sie sollten also dieser Schleife eine zusätzliche Bedingung geben. – Blank