Построение гистограммы с помощью Pylab - PullRequest
0 голосов
/ 14 октября 2011

Работа в Python 2.7.

Я пытаюсь построить гистограмму для чисел, сгенерированных 50 прогонами моего случайного блуждания.Но когда я использую pylab.hist (batting_average, bins = 10), я получаю странную разноцветную гистограмму, которая приближается к 500, но только с 50 прогонами прогулки, максимум, который он должен иметь на-ось будет 50.

Вот мой код:

a = ['Hit', 'Out']
b = [.3, .7]


def battingAverage(atBats, some_list=a, probabilities=b):
    num_hits = 0
    num_outs = 0
    current_BA = []
    for i in range(1,atBats):
        if random_pick(a, b) == 'Hit':
            num_hits += 1
        else:
            num_outs +=1
        BA = float(num_hits)/(float(num_hits)+float(num_outs))
        current_BA.append(BA)
    return current_BA

def printBAs():
    for i in range(50):
        batting_average = battingAverage(501)
        pylab.hist(batting_average, bins=10)

Что не так с моей гистограммой!?

Дайте мне знать, если что-то нужно уточнить, и я будуделай все возможное.

1 Ответ

1 голос
/ 14 октября 2011

Аргумент, переданный 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)

Хотя этот код все еще нуждается в очистке...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...