Я пытаюсь написать программу, которая выполняет случайное блуждание от центральной точки (0,0) 100 раз и вычисляет среднее число выполненных шагов. У меня есть следующий код:Программа Java Random Walk?
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;
}
}
У меня также есть функции тестирования:
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));
}
}
Что я делаю неправильно здесь? Моя программа всегда работает бесконечно, и я никогда не получаю возвращаемое значение. Он просто продолжает работать. Помощь приветствуется!
С ** центральной точки (0,0) ** к где? Или просто вернуться к ** центральной точке (0,0) **? – Blank
@Reno обратно в центральную точку –
Теперь мы понятны, на самом деле это всегда выполняется бесконечно, этот цикл, вы хотите, когда 'this.x == 0' и' this.y == 0', перерывы цикла, но это условие является весьма критичным, и этот цикл будет делать 100 раз. Мы не можем сказать, что «Случайный» возвращается к нам. Поэтому вы должны дать дополнительное условие этому циклу. – Blank