Explanation of c# source code for random walk

782 Views Asked by At

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?