Симуляция броска 2 кубиков 24 раза и расчета вероятности получения 6 в Python - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь смоделировать ставки на кости шевалье де Мера 1000 раз, чтобы оценить вероятность выигрыша каждой ставки.Я моделирую событие, когда 6 выпадает при броске матрицы 4 раза, и я получаю результат, аналогичный тому, который я ожидал (~ 0,5).Тем не менее, при моделировании события выпадения 6 при броске двух кубиков 24 раза, я получаю результат выше, чем ожидалось.Я получаю ~ 0,6, когда я ожидаю ~ 0,49.

Есть ли проблема с тем, как я запускаю симуляцию, или есть другое объяснение?Смотрите код:

total = 0
for i in range(1000):
    if 6 in randint(1,7,(4)):
        total +=1
print("The probability a 6 turns up when rolling 1 die 4 times is:",total/1000)

total = 0
for i in range(1000):
    for j in range(24):
        if 6 == randint(1,7) and 6 == randint(1,7):
            total +=1
print("The probability a 6 turns up when rolling 2 die 24 times is:",total/1000)

Пожалуйста, помогите!Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

randint (1,7) может вернуть 7.

Также не стоит сравнивать целые числа

И в первом эксперименте вы пропускаете цикл for k in range(4) и получаетестранный третий аргументОпечатка?

0 голосов
/ 04 февраля 2019

random.randint(a,b) включает в себя конечные точки a и b, поэтому используйте random.randint(1,6).

Если во втором случае вы имели в виду двойные 6, вы рассчитываете двойные 6 больше, чем один раз за испытание.Вычислите все 24, а затем проверьте наличие двойных 6s.

Вот рабочий код (Python 3.6):

from random import randint

trials = 1000

total = 0
for i in range(trials):
    if 6 in [randint(1,6) for j in range(4)]:
        total +=1
print(f'A 6 appeared when rolling 1 die 4 times {total/trials:.2%} of the time.')

total = 0
for i in range(trials):
    if (6,6) in [(randint(1,6),randint(1,6)) for j in range(24)]:
        total +=1
print(f'Double 6s appeared when rolling 2 dice 24 times {total/trials:.2%} of the time.')

Вывод:

A 6 appeared when rolling 1 die 4 times 50.30% of the time.
Double 6s appeared when rolling 2 dice 24 times 48.90% of the time.
...