<pre name="code" class="python">#quote from MIT 'introduction to computation and programming using python, Revised'
import random
import pylab
def stdDev(X):
mean = sum(X)/len(X)
tot = 0.0
for x in X:
tot += (x-mean)**2
return (tot/len(X))**0.5
def flipSim(flipsPerTrial, numTrials):
fracHeads = []
for n in range(numTrials):
heads = 0
for f in range(flipsPerTrial):
if random.random() < 0.5:
heads += 1
fracHeads.append(heads/float(flipsPerTrial))
mean = sum(fracHeads)/len(fracHeads)
sd = stdDev(fracHeads)
return (fracHeads, mean, sd)
def showErrorBars(minExp, maxExp, numTrials):
"""Assumes minExp and maxExp positive ints; minExp < maxExp
numTrials a positive integer
Plots mean fraction of heads with error bars"""
means, sds = [], []
xVals = []
for exp in range(minExp, maxExp + 1):
xVals.append(2**exp)
fracHeads, mean, sd = flipSim(2**exp, numTrials)
means.append(mean)
sds.append(sd)
pylab.errorbar(xVals, means, yerr=2*pylab.array(sds))
pylab.semilogx()
pylab.title('Mean Fraction of Heads (' + str(numTrials) + ' trials)')
pylab.xlabel('Number of flips per trial')
pylab.ylabel('Fraction of heads & 95% confidence')
showErrorBars(3, 10, 100)
pylab.show()
plot ErrorBar
最新推荐文章于 2024-10-16 22:13:23 发布