Python - игра в кости и монеты - PullRequest
1 голос
/ 19 апреля 2019

, ссылаясь на этот вопрос :

"Предположим, я бросаю 4-х сторонний кубик, а затем подбрасываю монету несколько раз, соответствующую броску кубика. Учитывая, что я получил триголовы на монетах перевернуты, какова вероятность того, что счет был 4? "

В ответе объясняется, что результат должен быть 2/3.

Я написал следующую частькода в Python 3:

import random

die=4
heads=3

die_max=4

tot=0
tot_die=0
for i in range(0,100000) :
    die_val=random.randint(1,die_max)
    heads_val=0
    for j in range(0,die_val) :
        heads_val+=random.randint(0,1)
    if die_val==die :
        tot_die+=1
    if heads_val==heads and die_val==die :
        tot+=1
print(tot/tot_die)

Я ожидаю, что он выдаст что-то около 0,66, но на самом деле он вычисляет около 0,25.

Я плохо понимаю теорему Питона или Байеса?

1 Ответ

1 голос
/ 19 апреля 2019

Ваш код на самом деле отвечает на вопрос: «Учитывая, что счет был 4, какова вероятность того, что вы получите три головы на броске монеты?» Чтобы он отвечал на заданный вопрос, измените условие вашего следующего за последним if оператора:

import random

die=4
heads=3

die_max=4

tot=0
tot_heads=0
for i in range(0,100000) :
    die_val=random.randint(1,die_max)
    heads_val=0
    for j in range(0,die_val) :
        heads_val+=random.randint(0,1)
    if heads_val==heads : # the important change
        tot_heads+=1
    if heads_val==heads and die_val==die :
        tot+=1
print(tot/tot_heads)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...