Каково ожидаемое количество смещенных монетных монет для этого алгоритма? - PullRequest
3 голосов
/ 25 января 2012

Предположим, у меня есть предвзятая монета. При переворачивании вероятность получения голов составляет 4/5.

Чтобы сфальсифицировать справедливость, я использую следующий алгоритм, который моделирует эту ситуацию. Предположим, True моделирует головы, а False представляет хвосты.

P (doUnfairFlip () = 0) = 0,8
и
P (doUnfairFlip () = 1) = 0,2

def fakeFairToss():
    flip1 = 0
    flip2 = 0
    while (flip1 == flip2):
        flip1 = doUnfairFlip()
        flip2 = doUnfairFlip()
    return (True if (flip1 == 0) else False)

Это использует тот факт, что одинаково вероятно получить головы-хвосты или хвост-головы после двух подбрасываний монеты.

Сколько отдельных подбрасываний этой смещенной монеты следует ожидать при каждом запуске этой функции?

Ответы [ 3 ]

4 голосов
/ 25 января 2012

Коэффициенты равенства равны 1/5^2 + 4/5^2 = 17/25 = 68%, при условии, что выборки из doUnfairFlip() равны IID .

Вместо того, чтобы думать об итерациях цикла для вызова функции, мы можем рассматривать ситуацию как неограниченную последовательность итераций, иногда «перемежающихся» возвратами функций. Обратите внимание, что возврат функции происходит именно тогда, когда равенство не выполняется, 100 - 68 = 32% времени.

Теперь мы можем идентифицировать ситуацию как дискретный Пуассоновский процесс , с lambda = 0.32. Среднее значение соответствующего распределения также lambda: мы можем ожидать около 0.32 вызовов функций на одну итерацию цикла, или 1.0 / 0.32 = 3.125 итераций на вызов, или 6.25 вызовов doUnfairFlip() на вызов.

1 голос
/ 25 января 2012

Если вы говорите, что

P(rand() % 2 = 0) = 0.8
P(rand() % 2 = 1) = 0.2

Тогда вероятность выполнения условия цикла равна

0.8*0.8 + 0.2*0.2 = 0.68

Вы будете выполнять цикл столько раз, сколько ожидаетсяраз, чтобы получить ошибку, когда р = 0,68, что составляет 3,125.Поэтому вы должны ожидать, что цикл будет выполнен 3,125 раза, а вызов rand () - 6,25 раза.

0 голосов
/ 25 января 2012

Я думаю, что это около 1,5 запусков цикла while или 3 вызова rand (). Хотя моя математика может быть неправильной.

...