In this link, the author implemented a simulation of a 2D random walk.
private void RunScript(int seed, int time, ref object A)
{
List <Point3d> pList = new List<Point3d>();
Walker w = new Walker();
Random random = new Random(seed);
for(int i = 0; i < time; i++){
int rnd = random.Next(0, 4);
w.step(rnd);
pList.Add(w.pos());
}
A = pList;
}
public class Walker
{
public int x;
public int y;
public int rnd;
public Walker(){
x = 0;
y = 0;
rnd = 0;
}
public Point3d pos(){
Point3d posPt = new Point3d(x, y, 0);
return posPt;
}
public int step(int rnd){
int choice = rnd;
if (choice == 0){
x++;
}
else if( choice == 1){
x--;
}
else if(choice == 2){
y++;
}
else if(choice == 3){
y--;
}
return choice;
}
}
According to this code, either x or y could be changed(incremented or decremented) at one step.
Is this consistent with the theory of Random Walk?
Shouldn't he have generated two random choices(one for x and another for y) and change both x and y at each step?