Wie kann ich bei einer Münze mit unbekanntem Bias so effizient wie möglich Variablen erzeugen, die mit einer Wahrscheinlichkeit von 0,5 Bernoulli-verteilt sind? Das heißt, unter Verwendung der Mindestanzahl von Flips pro generierter Variable.
Wie kann ich bei einer Münze mit unbekanntem Bias so effizient wie möglich Variablen erzeugen, die mit einer Wahrscheinlichkeit von 0,5 Bernoulli-verteilt sind? Das heißt, unter Verwendung der Mindestanzahl von Flips pro generierter Variable.
Antworten:
Dies ist ein bekanntes Problem mit mehreren netten Lösungen, die hier und im Stackoverflow besprochen wurden (anscheinend kann ich nicht mehr als einen Link posten, aber eine schnelle Google-Suche bietet Ihnen einige interessante Einträge). Schauen Sie sich den Wikipedia-Eintrag an
http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_biased_coin
Dies ist ein klassisches Problem, das meiner Meinung nach ursprünglich von Neumann zugeschrieben wurde. Eine Lösung besteht darin, die Münze paarweise zu werfen, bis die Paare unterschiedlich sind, und dann auf das Ergebnis der ersten Münze im Paar zu verzichten.
Lassen Sie das Ergebnis des , wobei die erste Münze und die zweite Münze ist. Jede Münze hat eine Wahrscheinlichkeit von Köpfen. Dann ist aufgrund der Symmetrie, was impliziert, dass . Um diese Symmetrie explizit zu sehen, beachten Sie, dass impliziert, dass die Ergebnisse oder , die beide aufgrund der Unabhängigkeit gleich wahrscheinlich sind. ( H , T ) ( T , H )
Empirisch ist die Wartezeit bis zu einem solchen ungleichen Paar
was explodiert, wenn näher an 0 oder 1 kommt (was Sinn macht).
Ich bin nicht sicher, wie ich die Begriffe effizient zusammenfassen soll, aber wir können aufhören, wenn die Gesamtzahl der Rollen und die Gesamtzahl der Erfolge sind, dass ist, da wir die verschiedenen Partitionen aufteilen können Ordnungen, die wir und in zwei Gruppen gleicher Wahrscheinlichkeit hätten erreichen können, die jeweils einem anderen ausgegebenen Label entsprechen. Wir müssen darauf achten, dass wir für diese Elemente noch nicht angehalten haben, dh dass kein Element ein Präfix der Länge mit Erfolgen hat, so dass ist. Ich bin mir nicht sicher, wie ich daraus eine erwartete Anzahl von Flips machen soll.t
Um zu zeigen:
Wir können bei TH oder HT anhalten, da diese die gleiche Wahrscheinlichkeit haben. Wenn wir uns nach Pascals Dreieck bewegen, befinden sich die nächsten geraden Terme in der vierten Reihe: 4, 6, 4. Das bedeutet, dass wir nach dem Würfeln anhalten können, wenn ein Kopf hochgekommen ist, da wir eine zweiteilige Übereinstimmung erstellen können: HHHT mit HHTH und technisch HTHH mit THHH obwohl wir für diese schon aufgehört hätten. In ähnlicher liefert das passende HHTT mit TTHH (den Rest hätten wir bereits gestoppt, bevor wir sie erreicht haben).
Für haben alle Sequenzen Präfixe gestoppt. Bei wird es etwas interessanter, wo wir FFFFTTFT mit FFFFTTTF abgleichen.
Für nach 8 Würfen ist die Wahrscheinlichkeit, nicht gestoppt zu haben, mit einer erwarteten Anzahl von Würfen, wenn wir von gestoppt haben . Für die Lösung, bei der wir Paare so lange rollen, bis sie sich unterscheiden, ist die Wahrscheinlichkeit, nicht gestoppt zu haben, mit einer erwarteten Anzahl von Rollen, wenn wir von 4 gestoppt haben. Durch Rekursion wird eine Obergrenze für die erwarteten Flips festgelegt für den vorgestellten Algorithmus ist .
Ich habe ein Python-Programm geschrieben, um die Haltepunkte auszudrucken:
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()
Drucke:
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