Étant donné une pièce de monnaie avec un biais inconnu, générer efficacement des variations d'une pièce équitable


10

É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.p


3
Une solution simple consiste à lancer la pièce deux fois: si c'est , -la sur les têtes, si c'est , -la sur les queues. Sinon, répétez l'expérience jusqu'à ce que l'un de ces deux soit atteint. HTTH
Cardinal

1
@cardinal: Nice! Pourquoi ne pas ajouter une réponse?
Neil G

2
@Glen_b: D'accord, mais pouvez-vous le faire avec le nombre minimum de flips par variable générée?
Neil G

3
@MichaelLugo: Je dirais que cela dépend définitivement de . :-) Si nous savons que nous pouvons le faire en une seule fois. Si nous savons que nous pouvons le faire en deux et, nous savons que c'est optimal dans les deux cas. La réponse doit être liée à l'entropie . Si nous ne savons rien de autre que ce , alors je soupçonne qu'un simple résultat de théorie des jeux donnera quelque chose de proche du schéma dans mon premier commentaire comme étant "optimal" d'une manière appropriée. pp=1/2p=1/4p p ( 0 , 1 )H(p)pp(0,1)
Cardinal

4
Bonjour Giorgio1927 et bienvenue sur le site! Veuillez ajouter la balise "self-study" à cette question, car elle permet aux gens de voir qu'ils devraient vous guider vers la réponse plutôt que de simplement en fournir une.
jbowman

Réponses:


6

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


Désolé, j'ai modifié la question pour qu'elle ne soit pas aussi facilement compatible avec Google…
Neil G

Pour les personnes qui pensent à répondre à la question, notez que cette réponse n'est pas optimale pour ma question modifiée.
Neil G

3

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)iXiYipP(Xi=H|XiYi)=P(Xi=T|XiYi)P(Xi=H|XiYi)=1/2 ( H , T ) ( T , H )XiYi(H,T)(T,H)

Empiriquement, le temps d'attente jusqu'à ce qu'une paire aussi inégale soit

1/P(XY)=11p2(1p)2=12p(1p),

qui explose lorsque se rapproche de 0 ou 1 (ce qui est logique).p


2

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.tnt(nt)ntnt(nt)

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=12112853161161281275316=424127<4

J'ai écrit un programme Python pour imprimer les points d'arrêt:

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()

impressions:

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

Lorsque est inconnu, toute solution doit fonctionner pour limiter les valeurs de et . Cela devrait indiquer clairement que la solution de @ Cardinal est optimale. Le nombre attendu de flips (étant donné le inconnu , bien sûr) est de .pp0p1p2/((p(1p))
whuber

@whuber: Je ne vois pas pourquoi cela devrait être optimal. Ma solution s'arrête dans tous les mêmes cas que la sienne. Cependant, il continuera à rouler après tthh par exemple, alors qu'il est possible de s'arrêter.
Neil G

Quelle est votre solution? Je n'en vois pas un décrit ici. Je pense que nous pourrions avoir différents concepts de la solution de @ Cardinal. Je comprends que cela signifie «arrêtez-vous chaque fois que le nombre de têtes est égal au nombre de queues et mappez cela à la valeur du premier résultat de la séquence».
whuber

@whuber: Vous voulez dire ceci: "Une solution simple consiste à lancer la pièce deux fois: si c'est HT, mappez-la sur les têtes, si c'est TH mappez-la sur les queues. Sinon, répétez l'expérience jusqu'à ce que l'une de ces deux soit atteinte." Cela ne s'arrêtera pas pour HHTT. Il attend une paire HT ou TH sur un index pair.
Neil G

Ma solution est de trouver une correspondance bipartite de préfixes équiprobables (dont aucun n'est un préfixe autre) et d'associer chaque moitié de la correspondance avec des têtes ou des queues.
Neil G
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.