Dada uma moeda com viés desconhecido , como posso gerar variáveis - tão eficientemente quanto possível - que são distribuídas por Bernoulli com probabilidade 0,5? Ou seja, usando o número mínimo de inversões por variável gerada.
random-generation
Neil G
fonte
fonte
Respostas:
Esse é um problema conhecido com várias soluções legais que foram discutidas aqui e no stackoverflow (parece que não posso postar mais de um link, mas uma rápida pesquisa no Google fornece algumas entradas interessantes). Dê uma olhada na entrada da Wikipedia
http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_beased_coin
fonte
Acredito que esse é um problema clássico, atribuído originalmente a von Neumann. Uma solução é continuar jogando a moeda em pares até que os pares sejam diferentes e depois adiar para o resultado da primeira moeda no par.
Empiricamente, o tempo de espera até que um par tão desigual seja
fonte
Ilustrar:
Podemos parar em TH ou HT, pois estes têm igual probabilidade. Movendo-se para baixo do triângulo de Pascal, os próximos termos pares estão na quarta linha: 4, 6, 4. O que significa que podemos parar após as jogadas se uma cabeça subir, pois podemos criar uma correspondência bipartida: HHHT com HHTH e tecnicamente HTHH com THHH, embora já tivéssemos parado para isso. Da mesma forma, produz o HHTT correspondente ao TTHH (o resto, já teríamos parado antes de alcançá-los).(42)
Para , todas as sequências pararam prefixos. Fica um pouco mais interessante em onde combinamos FFFFTTFT com FFFFTTTF.(52) (83)
Para após 8 jogadas, a chance de não ter parado é com um número esperado de rolagens se tivermos parado de . Para a solução em que mantemos pares rolantes até que eles diferam, a chance de não ter parado é com um número esperado de rolagens, se tivermos parado de 4. Por recursão, um limite superior nos lançamentos esperados para o algoritmo apresentado é .p=12 1128 5316 116 128127⋅5316=424127<4
Eu escrevi um programa Python para imprimir os pontos de parada:
impressões:
fonte