randomwalk6.py
|
#!/usr/bin/env python
# Simple python examples
# python/randomwalk6.py
# David MacKay
# This can be run from a unix shell
#
# Make a walk with a fair coin, plotting
# with Gnuplot the points reached at times
# 0, period, 2*period, 3*period...
#
# R = number of walks
# T = duration of walk
# period = period between points shown
#
import random
import sys
import Gnuplot, Gnuplot.funcutils
def walk(T=10, period=1):
"""random walk with a fair coin"""
x=0; answer= [[0,0]]
for t in xrange(T+1):
u = random.random()
if (u<= 0.5): x+=1
else: x-=1
if (t%period == 0 ) :
answer.append([ t+1 , x ])
return answer
def makewalks(R=10, T=100,period=1):
"""Makes walks and plots them with gnuplot"""
g = Gnuplot.Gnuplot(persist=1)
g.title('Random walks')
g('set data style line')
for r in xrange(R):
newwalk = walk(T,period)
if(r==0): g.plot(newwalk)
else: g.replot(newwalk)
if(1):
R=4
T=100
period=1
makewalks(R, T, period )
# This program illustrates
# - how to plot lists of lists in gnuplot
# - how to use random.random()
# (there are many other random functions
# available in python; random.random()
# makes numbers between 0 and 1)
|