""" random walk problem, chapter 9 exercise 12 12: finished in class, version 2 Thu Nov 10 """ import random 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(n_steps): """ Return distance from start after random walk of n steps. >>> x = random_walk(10) >>> int(x) == x and 0 <= x <= 10 # return positive int True """ position = 0 for i in range(n_steps): offset = random.choice([-1, 1]) position = position + offset return abs(position) def main(): print "Finding average distance 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(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()