""" random walk problem, chapter 9 exercise 13 two dimensions (x,y) in class, version 2 Thu Nov 10 """ import random from math import sqrt def average(numbers): """ Return mean of a list of numbers. >>> average([1, 2, 3]) 2.0 >>> average([]) 0.0 """ if len(numbers) == 0: return 0.0 return float(sum(numbers))/len(numbers) def random_walk_xy(n_steps): """ Return distance from start after random walk of n steps. in two dimensions. >>> distance = random_walk_xy(10) >>> 0 <= distance <= 10 True """ (x, y) = (0, 0) for i in range(n_steps): (dx, dy) = random.choice([(0,1), (1,0), (0,-1), (-1,0)]) (x, y) = (x + dx, y + dy) return sqrt(x**2 + y**2) def main(): print "Finding average distance in 2D from random walk of n steps" steps = int(input("What is number of steps? ")) iterations = 100 distances = [] for i in range(iterations): distances.append(random_walk_xy(steps)) print "First few walks: %i, %i, %i" % \ (distances[0], distances[1], distances[2]) mean = average(distances) print "The mean of %i walks of %i steps is %.2f" % \ (iterations, steps, mean) if __name__ == "__main__": from doctest import testmod testmod() main()