Аргумент, переданный battingAverage
, равен 501 ... и является числом бит-битов.Вы делаете 50 гистограмм с 500 at-bats на гистограмму.
(О, и вам нужно исправить форматирование вашего кода ... отступы испорчены.)
Вашкод не делает то, что вы думаете.
Я думаю, вы хотите, чтобы battingAverage
вернул итоговое среднее значение, но он возвращает список средних значений, по одному для каждой at-bat.Затем вы строите этот список.
Я думаю, что вы хотите вернуть одно число из battingAverage, и вы хотите накапливать список в функции printBAs () и вывести pylab.hist из цикла for.
Не думаю, что это домашняя работа?
Другими словами, я думаю, что вы хотите что-то вроде этого:
a = ['Hit', 'Out']
b = [.3, .7]
def battingAverage(atBats, results=a, probabilities=b):
num_hits = 0
num_outs = 0
for i in range(atBats):
if random_pick(results, probabilities) == 'Hit':
num_hits += 1
else:
num_outs +=1
BA = float(num_hits)/(float(num_hits)+float(num_outs))
return BA
def printBAs():
batting_averages = [battingAverage(500) for i in range(50)]
pylab.hist(batting_averages, bins=10)
Хотя этот код все еще нуждается в очистке...