mklingenの答えを少し一般化させてください。基本的には、ギャンブラーの誤 implementを実装する必要がありますが、ここではより一般的な方法を提供します。
n
確率のある可能性のあるイベントがあるとしましょうp_1, p_2, ..., p_n
。イベントは、ときにi
起こった、その確率は係数で再スケールばならない0≤a_i≤1/p_i
(持っている必要があり、後者は重要であるそうでなければ、1よりも確率も大きく、他のイベントで終わる負の確率、基本的には平均「反かかわらず、」 -イベント。か何かを)通常a_i<1
。たとえばa_i=p_i
、を選択できます。これは、2回目に発生するイベントの確率が、イベントが連続して正確に2回発生する元の確率であることを意味します。たとえば、2回目のコイントスの確率は1/2ではなく1/4です。一方、a_i>1
「運/不運の一撃」を引き起こすことを意味する、いくつかのを持つこともできます。
他のすべてのイベントは、相互に同等の確率を維持する必要がありますb_i
。つまり、すべての確率の合計が1になるように、同じ要因ですべてのスケールを変更する必要があります。
1 = a_i*p_i + b_i*(1-p_i) # Σ_{j≠i) p_j = 1 - p_i
⇒ b_i = (1 - a_i*p_i) / (1 - p_i). (1)
これまでのところ、とても簡単です。しかし、別の要件を追加しましょう。2つのイベントのすべての可能なシーケンスを考慮して、そこから抽出された単一イベントの確率が元の確率でなければなりません。
させて
/ p_i * b_i * p_j (j≠i)
p_ij = <
\ a_i * (p_i)² (j=i)
は、イベントのj
後にイベントが発生する確率を示し、i
それ以外のp_ij≠p_ji
場合b_i=b_j (2)
(が(1)
暗示するa_j = 1 - a_i*p_i + (1-a_i)*p_i/p_j
)に注意してください。これは、ベイズの定理が要求するものでもあり、これはまた、
Σ_j p_ij = p_i * b_i * (1 - p_i) + a_i * (p_i)²
= b_i * p_i + (a_i - b_i) * (p_i)²
= p_i # using (1)
望みどおり。これa_i
が他のすべてを修正することを意味することに注意してください。
次に、この手順を複数回適用した場合、つまり3つ以上のイベントのシーケンスに対して何が起こるかを見てみましょう。3番目のイベントの不正確率の選択には、基本的に2つのオプションがあります。
a)最初のイベントとリグを忘れて、2番目のイベントのみが発生したかのように。
/ p_ij * a_j * p_j (j=k)
p_ijk = <
\ p_ij * b_j * p_l (j≠k)
これは、たとえばp_jik≠p_ikj
ほとんどの場合、通常、ベイズに違反することに注意してください。
b)次に発生するイベントの新しい確率を取得する新しい確率として、p_ij
(fixedのi
)確率を使用しpi_j
ます。を変更するかどうかはあなた次第ですが、変更されたために新しいものは間違いなく異なることに注意してください。この場合も、同じ確率で発生するすべての順列を要求することにより、おそらく選択が制限されます。どれどれ...pi_jk
k
ai_j
bi_j
pi_j
ai_j
ijk
/ p_ij * bi_j * pi_k (j≠k)
p_ijk = <
\ (p_ij)² * ai_j (j=k)
/ b_i * bi_j * p_i * p_j * pi_k (i≠j≠k≠i)
| b_i * ai_j * p_i * (p_j)² (i≠j=k)
= < a_i * (p_i)² * bi_i * pi_k (i=j≠k)
| b_i * p_i * bi_j * p_k * pi_i (i=k≠j)
\ a_i * ai_i * (p_i)² * pi_i (i=k=j)
およびその循環順列。それぞれの場合に等しくなければなりません。
私はこれに関する私の継続がしばらく待たなければならないのではないかと心配しています...