Нахождение вероятности на предвзятом штампе - PullRequest
1 голос
/ 05 мая 2019

Мне пришлось смоделировать смещенный штамп, чтобы 6 происходило более чем в 50% случаев.Что я смог сделать, используя:

from random import randint,choice
def bdie():
    out = random.randint(0,2)
    if (out==1 or out == 2):
        return 6
    else:
        r = choice([i for i in range(1,7) if i not in [6]])
        return r

def bdthrow(n):
    output = []
    for i in range(0,n):
        if n>0 & n<=100000000:
            outcome = bdie()
            output.append(outcome)
        else:
            print("Invalid")
    print(output)

Для которого будет вывод:

[6, 6, 6, 6, 6, 3, 6, 3,5, 4]

Теперь на этом смещенном кристалле я должен найти вероятность того, что верхняя грань равна 5, и мне нужно найти среднее число каждой грани кристалла.

Теперь легко найти сумму на бумаге, где я могу найти вероятность, но я не уверен, как реализовать это в python.

Заранее спасибо.

1 Ответ

1 голос
/ 05 мая 2019

Если я правильно понимаю, вы ищете непредвзятую оценку получения 5. Такой оценкой может быть число 5, полученное при бросании костей достаточное количество раз.Т.е. # fives / n.

С точки зрения памяти я бы рекомендовал использовать defaultdict.Также нет необходимости проверять значение n в каждом раунде.

from random import randint,choice
from collections import defaultdict

def bdie():
    out = randint(0,2)
    if (out==1 or out == 2):
        return 6
    else:
        r = choice([i for i in range(1,7) if i not in [6]])
        return r

def bdthrow(n):
    output = defaultdict(int)
    for i in range(0,n):
        outcome = bdie()
        output[outcome] +=1
    return (float(output[5])/n)

Есть несколько других оптимизаций в коде, но наивно это должно работать.

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