-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path15_10.py
35 lines (31 loc) · 1.18 KB
/
15_10.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def flip(numFlips):
"""numFlips: 正の整数"""
heads = 0
for i in range(numFlips):
if random.choice(('H', 'T')) == 'H':
heads += 1
return heads/float(numFlips)
def flipSim(numFlipsPerTrial, numTrials):
fracHeads = []
for i in range(numTrials):
fracHeads.append(flip(numFlipsPerTrial))
mean = sum(fracHeads)/len(fracHeads)
sd = stdDev(fracHeads)
return (fracHeads, mean, sd)
def labelPlot(numFlips, numTrials, mean, sd):
pylab.title(str(numTrials) + ' trials of' + str(numFlips) + ' flips each')
pylab.xlabel('Fraction of Heads')
pylab.ylabel('Number of Trials')
pylab.annotate('Mean = ' + str(round(mean, 4)) + '\nSD = ' + str(round(sd, 4)), size='x-large', xycoords = 'axes fraction', xy = (0.67, 0.5))
def makePlots(numFlips1, numFlips2, numTrials):
val1, mean1, sd1 = flipSim(numFlips1, numTrials)
pylab.hist(val1, bins=20)
xmin,xmax = pylab.xlim()
labelPlot(numFlips1, numTrials, mean1, sd1)
pylab.figure()
val2, mean2, sd2 = flipSim(numFlips2, numTrials)
pylab.hist(val2)
pylab.xlim(xmin, xmax)
labelPlot(numFlips2, numTrials, mean2, sd2)
pylab.show()
makePlots(100, 1000, 100000)