Why do this? Well, random walks are useful in modeling physical processes like Brownian motion, and also the behaviour of stock prices.
Here is a program that counts the number of steps in the random walk:import random w = int(raw_input("width? ")) x = w/2 pathLength = 0 while True: r = random.randrange(1,3) if r == 1: x += 1 else: x -= 1 print 'r=', r, 'x=',x if x < 0 or x >= w: break pathLength += 1 print 'The walk took ', pathLength, 'steps'Here, I've introduced another function from the
random
library: random.randrange(a,b)
returns a random value
between a
and b-1
,
so random.randrange(1,3)
return either 1 or 2, at
random.
Each time we run the program, a different sequence occurs, with a different path length. Now, I want to get some statistics: how long is the path length, on average?
To do this, I need to run the random walk many times, and get the path length each time. So, I will place the above code inside another loop, which runs 100 times. I will add up all the path lengths, and divide by 100, to get the average length. This program is the result:
import random w = int(raw_input("width? ")) sum_path_lengths = 0 for attempt in range(100): x = w/2 pathLength = 0 while True: r = random.randrange(1,3) if r == 1: x += 1 else: x -= 1 if x < 0 or x >= w: break pathLength += 1 sum_path_lengths += path_length avg_path_length = float(sum_path_lengths) / 100