Ho riscontrato un problema con la distanza media in questo esercizio. Dovrebbe essere vicino al sqrt di N passi, ma è inferiore. Puoi aiutarmi a scoprire dov'è il mio errore?Simple 2D Random walk
passeggiata casuale 2D. Una camminata casuale bidimensionale simula il comportamento di una particella che si muove in una griglia di punti. Ad ogni passaggio, il walker casuale si sposta verso nord, sud, est o ovest con probabilità 1/4, indipendentemente dalle mosse precedenti. Determina quanto lontano (in media) il walker casuale è dal punto di partenza dopo N passi. (risposta teorica:. Dell'ordine di 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");
}
}
La gamma da <0,1> è più grande di (3,4> quindi iniziarei a renderli anche utilizzando meno di un confronto in tutto il mondo. L'ho testato ma non ha apportato modifiche significative, ancora ... inizia da qui. – zubergu
Non penso che dovrebbe convergere in sqrt (N) o qualcosa del genere. Dovrebbe essere dell'ordine di grandezza di sqrt (N) o alcuni di questi. O mb O (sqrt (N)). Math ... –
Quindi immagino che la mia soluzione sia giusta? –