З огляду на монету з невідомим зміщенням , як я можу генерувати змінні - якомога ефективніше - які розподіляються Бернуллі з вірогідністю 0,5? Тобто, використовуючи мінімальну кількість фліпів на генеровану змінну.
З огляду на монету з невідомим зміщенням , як я можу генерувати змінні - якомога ефективніше - які розподіляються Бернуллі з вірогідністю 0,5? Тобто, використовуючи мінімальну кількість фліпів на генеровану змінну.
Відповіді:
Це добре відома проблема з кількома приємними рішеннями, які обговорювалися тут і в stackoverflow (схоже, я не можу розмістити більше ніж одне посилання, але швидкий пошук в Google дає вам кілька цікавих записів). Подивіться на запис у вікіпедії
http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_biased_coin
Це класична проблема, на мою думку, спочатку приписується фон Нойману. Одне рішення - продовжувати кидати монету парами до тих пір, поки пари не будуть різними, а потім відкласти до результату першої монети в парі.
Явно нехай є результатом кидання i , причому X i - перша монета, а Y i - друга монета. Кожна монета має ймовірність р голів. Тоді P ( X i = H | X i ≠ Y i ) = P ( X i = T | X i ≠ Y i ) через симетрію, з якої випливає P ( . Щоб пояснити цю симетрію, зауважимо, що X i ≠ Y i означає, що результати є ( H , T ) або ( T , H ) , і те і інше однаково вірогідне через незалежність.
Емпірично, час очікування до появи такої нерівної пари
який вибухає, коли наближається до 0 або 1 (що має сенс).
Я не впевнений, як ефективно підбити підсумки, але ми можемо зупинятись, коли загальна кількість рулонів та загальна кількість успіхів t такі, що ( n це навіть тому, що ми можемо розділити різні впорядкування, яких ми могли б досягтиnіt,на дві групи з однаковою ймовірністю, кожна з яких відповідає різній виведеній мітці. Ми повинні бути обережними, щоб ми вже не зупинилися на цих елементах, тобто щоб жоден елемент не мав префікса довжиниn'зt'успіхами, що ( n'парне. Я не впевнений, як перетворити це на очікувану кількість сальто.
Проілюструвати:
Ми можемо зупинитися на TH або HT, оскільки вони мають однакову ймовірність. Рухаючись вниз по трикутнику Паскаля, наступні парні доданки знаходяться в четвертому ряду: 4, 6, 4. Це означає, що ми можемо зупинитися після рулонів, якщо одна голова підійде, оскільки ми можемо створити двосторонню відповідність: HHHT з HHTH, а технічно HTHH з THHH, хоча ми б вже зупинилися на них. Аналогічно, дає відповідність HHTT з TTHH (решта, ми б вже зупинилися, перш ніж їх досягти).
Для всі послідовності зупинили префікси. Це стає трохи цікавіше за ( 8 де ми узгоджуємо FFFFTTFT з FFFFTTTF.
Для після 8 рулонів шанс не зупинитися -1 із очікуваною кількістю рулонів, якщо ми зупинилися на53 . Що стосується рішення, коли ми тримаємо прокатні пари, поки вони не відрізняються, шанс не зупинитися -1 з очікуваною кількістю валків, якщо ми зупинилися на 4. За допомогою рекурсії верхня межа очікуваного флірту для представленого алгоритму дорівнює128.
Я написав програму Python, щоб роздрукувати точки зупинки:
import scipy.misc
from collections import defaultdict
bins = defaultdict(list)
def go(depth, seq=[], k=0):
n = len(seq)
if scipy.misc.comb(n, k, True) % 2 == 0:
bins[(n,k)].append("".join("T" if x else "F"
for x in seq))
return
if n < depth:
for i in range(2):
seq.append(i)
go(depth, seq, k+i)
seq.pop()
go(8)
for key, value in sorted(bins.items()):
for i, v in enumerate(value):
print(v, "->", "F" if i < len(value) // 2 else "T")
print()
відбитки:
FT -> F
TF -> T
FFFT -> F
FFTF -> T
FFTT -> F
TTFF -> T
TTFT -> F
TTTF -> T
FFFFFT -> F
FFFFTF -> T
TTTTFT -> F
TTTTTF -> T
FFFFFFFT -> F
FFFFFFTF -> T
FFFFFFTT -> F
FFFFTTFF -> T
FFFFTTFT -> F
FFFFTTTF -> T
FFFFTTTT -> F
TTTTFFFF -> T
TTTTFFFT -> F
TTTTFFTF -> T
TTTTFFTT -> F
TTTTTTFF -> T
TTTTTTFT -> F
TTTTTTTF -> T