Вероятность падения монеты / формула Бернулли

Меня смущает мой результат. Я пытаюсь решить упражнение:

«Какова вероятность того, что монета с вероятностью 1/3 решения выпасть (решка) выпадет ровно 10 раз решкой при 30 попытках?»

Я получил странный результат: 1.4592670745133494e-07 (формула Бернулли)

Что я делаю не так? Спасибо за вашу помощь.

def fac(n):
    return math.factorial(n)

a = fac(30)
b = fac(10)
c = fac(20)

(a / (b * c)) * (1/3)** 30

=> 1.4592670745133468e-07

person Da Ka    schedule 15.04.2019    source источник


Ответы (2)


Вы неправильно применили формулу: решка (вероятность 1/3) должна быть 10 раз, а орел (вероятность 1-1/3=2/3) 30-10=20 раз.

So,

(1/3)** 30

должно быть

(1/3)** 10 * (2/3)** 20

давая 0,153 в качестве ответа.

person Julius Vainora    schedule 15.04.2019

При выполнении вероятностных расчетов в Python часто бывает полезно смоделировать эксперимент, чтобы сравнить его с вашей попыткой точного расчета. Наивная версия будет:

import random

def simulate(n,k,prob = 0.5,trials = 10000):
    """estimates the probability of seeing exactly k heads in n rolls"""
    successes = 0
    for i in range(trials):
        trial = ''.join('H' if random.random() < prob else 'T' for _ in range(n))
        if trial.count('H') == k: successes += 1
    return successes/trials

Например, мой первый запуск simulate(30,10,1/3) оценивается как 0.1525, что совпадает с ответом Юлиуса Вайнора.

person John Coleman    schedule 15.04.2019