I'm simulating a 2-dimensional random walk, with direction 0 < θ < 2π and T=1000 steps. I already have a code which simulates a single walk, repeats it 12 times, and saves each run into sequentially named text files:
a=np.zeros((1000,2), dtype=np.float) print a # Prints array with zeros as entries # Single random walk def randwalk(x,y): # Defines the randwalk function theta=2*math.pi*rd.rand() x+=math.cos(theta); y+=math.sin(theta); return (x,y) # Function returns new (x,y) coordinates x, y = 0., 0. # Starting point is the origin for i in range(1000): # Walk contains 1000 steps x, y = randwalk(x,y) a[i,:] = x, y # Replaces entries of a with (x,y) coordinates # Repeating random walk 12 times fn_base = "random_walk_%i.txt" # Saves each run to sequentially named .txt for j in range(12): rd.seed() # Uses different random seed for every run x, y = 0., 0. for i in range(1000): x, y = randwalk(x,y) a[i,:] = x, y fn = fn_base % j # Allocates fn to the numbered file np.savetxt(fn, a) # Saves run data to appropriate text file
Now I want to calculate the mean square displacement over all 12 walks. To do this, my initial thought was to import the data from each text file back into a numpy array, eg:
infile="random_walk_0.txt" rw0dat=np.genfromtxt(infile) print rw0dat
And then somehow manipulate the arrays to find the mean square displacement.
Is there a more efficient way to go about finding the MSD with what I have?