Étant donné une pièce avec un biais inconnu , comment puis-je générer des variations - aussi efficacement que possible - qui sont distribuées par Bernoulli avec une probabilité de 0,5? Autrement dit, en utilisant le nombre minimum de flips par variable générée.
random-generation
Neil G
la source
la source
Réponses:
C'est un problème bien connu avec plusieurs belles solutions qui ont été discutées ici et dans stackoverflow (il semble que je ne puisse pas poster plus d'un lien mais une recherche rapide sur Google vous donne des entrées intéressantes). Jetez un oeil à l'entrée wikipedia
http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_bias_coin
la source
C'est un problème classique, je crois attribué à l'origine à von Neumann. Une solution consiste à continuer à lancer la pièce par paires jusqu'à ce que les paires soient différentes, puis à s'en remettre au résultat de la première pièce de la paire.
Soit explicitement le résultat du tirage , étant la première pièce et étant la deuxième pièce. Chaque pièce a une probabilité de têtes. Alors raison de la symétrie, ce qui implique . Pour voir de façon explicite cette symétrie, notez que implique que les résultats sont ou , les deux étant également probables en raison de l'indépendance.(Xi,Yi) i Xi Yi p P(Xi=H|Xi≠Yi)=P(Xi=T|Xi≠Yi) P(Xi=H|Xi≠Yi)=1/2 ( H , T ) ( T , H )Xi≠Yi (H,T) (T,H)
Empiriquement, le temps d'attente jusqu'à ce qu'une paire aussi inégale soit
qui explose lorsque se rapproche de 0 ou 1 (ce qui est logique).p
la source
Je ne sais pas comment résumer les termes efficacement, mais nous pouvons nous arrêter chaque fois que le nombre total de rouleaux et le nombre total de succès sont tels que est égal puisque nous pouvons partitionner les différents ordonnances que nous aurions pu atteindre et en deux groupes de probabilité égale correspondant chacun à une étiquette de sortie différente. Nous devons faire attention à ne pas nous être déjà arrêtés pour ces éléments, c'est-à-dire qu'aucun élément n'a un préfixe de longueur avec succès tel que soit pair. Je ne sais pas comment transformer cela en un nombre attendu de flips.tn t (nt) n t n′ t′ (n′t′)
Pour illustrer:
Nous pouvons nous arrêter à TH ou HT car ceux-ci ont une probabilité égale. En descendant dans le triangle de Pascal, les termes pairs suivants sont dans la quatrième ligne: 4, 6, 4. Cela signifie que nous pouvons nous arrêter après les lancers si une tête est apparue car nous pouvons créer une correspondance bipartite: HHHT avec HHTH, et techniquement HTHH avec THHH bien que nous nous serions déjà arrêtés pour ceux-là. De même, donne le HHTT correspondant à TTHH (le reste, nous aurions déjà arrêté avant de les atteindre).(42)
Pour , toutes les séquences ont des préfixes arrêtés. Cela devient un peu plus intéressant dans où nous associons FFFFTTFT à FFFFTTTF.(52) (83)
Pour après 8 lancers, la chance de ne pas avoir arrêté est avec un nombre attendu de lancers si nous avons arrêté de . Pour la solution où nous continuons à rouler les paires jusqu'à ce qu'elles diffèrent, la chance de ne pas s'arrêter est avec un nombre attendu de rouleaux si nous nous sommes arrêtés à 4. Par récursion, une borne supérieure sur les flips attendus pour l'algorithme présenté est .p=12 1128 5316 116 128127⋅5316=424127<4
J'ai écrit un programme Python pour imprimer les points d'arrêt:
impressions:
la source