Работа в Python 2.7.
Я пытаюсь найти способ случайного блуждания.Но сначала у меня возникают проблемы с суммированием количества результатов, которые я получаю от генератора случайных чисел.
Первый фрагмент кода:
def random_pick(some_list, probabilities):
x = random.uniform(0,1)
cumulative_probability = 0.0
for item, item_probability in zip(some_list, probabilities):
cumulative_probability += item_probability
if x < cumulative_probability: break
return item
В этом случае список представляет собой =['Hit', 'Out'] и соответствующие вероятности определяются как b = [.3, .7].Этот код возвращает «Hit» с вероятностью .3 и «Out» с вероятностью .7.
Затем у меня есть код для создания грубого симулятора среднего уровня игрока на основе этих вероятностей:
def battingAverage(atBats, i, some_list=a, probabilities=b):
for i in range(1,atBats):
if random_pick(a, b) == 'Hit':
hit = random_pick(a, b)
print '%.0f: %s' % (1, 'Hit')
elif random_pick(a, b) == 'Out':
out = random_pick(a, b)
print '%.0f: %s' % (2, 'Out')
Когда я запускаю это, я получаю случайное поколение столько летучих мышей, сколько я выберу.Но я хотел бы иметь возможность затем суммировать количество экземпляров или и тех, и других, но я не смог понять, как это сделать.Я попытался использовать код, подобный приведенному ниже, после изменения random_pick для возврата вероятности вместо элемента, но безрезультатно.
def battingAverage(atBats, i, some_list=a, probabilities=b):
num_hits = 0
num_outs = 0
for i in range(1,atBats):
if random_pick(a, b) == 'Hit':
hit = (random_pick(a, b))/.3
num_hits += hit
elif random_pick(a, b) == 'Out':
out = (random_pick(a, b))/7
num_outs += out
print num_hits, num_outs
Любая помощь будет принята с благодарностью.Кроме того, кто-нибудь знает хороший ресурс для изучения симуляции Монте-Карло?