Mam problem ze średnią odległością w tym ćwiczeniu. Powinien być zbliżony do sqrt N kroków, ale jest niższy. Czy możesz mi pomóc dowiedzieć się, gdzie jest mój błąd?Proste 2D Losowy spacer
2D losowy spacer. Dwuwymiarowy przypadkowy spacer symuluje zachowanie cząstki poruszającej się w siatce punktów. Na każdym kroku, przypadkowy chodzik porusza się na północ, południe, wschód lub zachód z prawdopodobieństwem 1/4, niezależnie od poprzednich ruchów. Określ, jak daleko (przeciętnie) znajduje się przypadkowy chodzik od punktu początkowego po N krokach. (odpowiedź teoretyczna. Na zlecenie sqrt (n))
public class RandomWalk{
public static void main(String[] args){
int N = Integer.parseInt(args[0]);
double nextStep = 0;
double averageDistance = 0;
int COUNT = 1000;
for (int j = 0; j < COUNT; j++){
int moveWest = 0;
int moveEast = 0;
int moveSouth = 0;
int moveNorth = 0;
double distance = 0;
for (int i = 0; i < N; i++){
nextStep = Math.random()*4;
if (nextStep <= 1) ++moveWest;
else if (nextStep <= 2) ++moveEast;
else if (nextStep <= 3) ++moveSouth;
else if (nextStep <= 4)++moveNorth;
}
moveEast = moveEast - moveWest;
moveNorth = moveNorth - moveSouth;
distance = Math.sqrt((moveEast * moveEast) + (moveNorth * moveNorth));
averageDistance += distance;
System.out.println("Walker is " + distance + "\t steps away of from the starting point");
//System.out.println("Sqrt of N is " + Math.sqrt(N));
}
System.out.println("Average distance is " + averageDistance/COUNT + " steps away of from the starting point");
}
}
Zasięg od <0,1> jest większy niż (3,4>, więc zacznę od zrobienia ich nawet przy użyciu wszędzie mniej niż porównania. Testowałem to, ale nie wprowadziłem znaczących zmian, nadal ... zacznij od tego. – zubergu
Nie sądzę, że ma on zbiegać się do sqrt (N) lub coś podobnego. Ma on być rzędu wielkości sqrt (N) lub niektórych takich. Lub mb O (sqrt (N)). Matematyka ... –
Potem myślę, że moje rozwiązanie jest właściwe? –