バイアスが不明なコインが与えられた場合、公正なコインから効率的に変量を生成します


10

未知のバイアスコインが与えられた場合、ベルヌーイ分布で確率0.5の変量を(可能な限り効率的に)どうやって生成できますか?つまり、生成された変量ごとのフリップの最小数を使用します。p


3
簡単な解決策は、コインを2回反転することです:それの場合はそれの場合は、頭にマップT Hは尾にマップします。それ以外の場合は、これらの2つのうちの1つが達成されるまで実験を繰り返します。HTTH
枢機卿

1
@cardinal:いいね!答えを追加してみませんか?
Neil G

2
@Glen_b:わかりましたが、生成された変量ごとのフリップの最小数でそれを行うことができますか?
Neil G

3
@MichaelLugo:間違いなく依存すると思います。:-)場合は、P = 1 / 2、私たちは1つのフリップでそれを行うことができます知っています。場合は、P = 1 / 4は、我々は2でそれを行うことができます知っていると、私たちは、これは両方のケースで最適であることを知っています。答えはエントロピーH p )に関連している必要があります。私たちは知っていない場合は何も程度のpそれ以外のp 0 1 pp=1/2p=1/4H(p)pp(0,1)、それから私は単純なゲーム理論の結果が最初のコメントのスキームに近いものを適切な方法で「最適」であると疑っています。
枢機卿

4
こんにちは、Giorgio1927、そしてサイトへようこそ!この質問に「自習」タグを追加してください。タグを提供するだけでなく、回答に導く必要があることを人々に知らせます。
jbowman '10年

回答:


6

これは、こことstackoverflowで説明されているいくつかの優れたソリューションのよく知られている問題です(私は複数のリンクを投稿することはできないようですが、グーグル検索でいくつかの興味深いエントリが表示されます)。ウィキペディアのエントリをご覧ください

http://en.wikipedia.org/wiki/Fair_coin#Fair_results_from_a_biased_coin


申し訳ありませんが、簡単にGoogleに対応できないように質問を変更しました…
Neil G

質問への回答を考えている人にとって、この回答は私の編集した質問には最適ではないことに注意してください。
Neil G

3

これは古典的な問題であり、フォンノイマンに元々あると考えられています。1つの解決策は、ペアが異なるまでコインをペアで投げ続け、次にペアの最初のコインの結果に従うことです。

(Xi,Yi)iXiYipP(Xi=H|XiYi)=P(Xi=T|XiYi)P(Xi=H|XiYi)=1/2XiYi(H,T)(T,H)

経験的に、このような不均等なペアになるまでの待ち時間は

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

p


2

nt(nt)ntnt(nt)

説明する:

(42)

(52)(83)

p=12112853161161281275316=424127<4

停止点を出力する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

pp0p1p2/((p(1p))

@whuber:それが最適であるべき理由がわかりません。私の解決策は彼とまったく同じ場合に止まります。ただし、彼は、たとえばこれ以降もロールし続けるでしょうが、停止することは可能です。
Neil G

あなたの解決策は何ですか?ここで説明されているものはありません。@Cardinalの解決策には異なる概念があるかもしれません。私はそれを「頭の数が尾の数と等しいときはいつでも停止し、それをシーケンスの最初の結果の値にマッピングする」ことを意味すると理解しています。
whuber

@whuber:あなたはこれを意味します:「コインを2回裏返すことは単純な解決策です:HTの場合は表に、THの場合は裏にマッピングします。それ以外の場合は、これらの2つのいずれかが達成されるまで実験を繰り返します。」これはHHTTの場合は停止しません。偶数のインデックスでペアHTまたはTHを待ちます。
Neil G

私の解決策は、等確率プレフィックス(どちらも別のプレフィックスではない)の2部構成のマッチングを見つけ、マッチングの各半分を頭または尾のいずれかに関連付けることです。
Neil G
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.