Sie und ich beschließen, ein Spiel zu spielen, bei dem wir abwechselnd eine Münze werfen. Der erste Spieler, der insgesamt 10 Köpfe umdreht, gewinnt das Spiel. Natürlich gibt es einen Streit darüber, wer zuerst gehen sollte.
Simulationen dieses Spiels zeigen, dass der Spieler, der zuerst flippt, 6% mehr gewinnt als der Spieler, der als Zweiter flippt (der erste Spieler gewinnt ca. 53% der Zeit). Ich bin daran interessiert, dies analytisch zu modellieren.
Dies ist keine binomische Zufallsvariable, da es keine feste Anzahl von Versuchen gibt (drehen, bis jemand 10 Köpfe bekommt). Wie kann ich das modellieren? Ist es die negative Binomialverteilung?
Um meine Ergebnisse neu erstellen zu können, ist hier mein Python-Code:
import numpy as np
from numba import jit
@jit
def sim(N):
P1_wins = 0
P2_wins = 0
for i in range(N):
P1_heads = 0
P2_heads = 0
while True:
P1_heads += np.random.randint(0,2)
if P1_heads == 10:
P1_wins+=1
break
P2_heads+= np.random.randint(0,2)
if P2_heads==10:
P2_wins+=1
break
return P1_wins/N, P2_wins/N
a,b = sim(1000000)
probability
python
binomial
negative-binomial
Demetri Pananos
quelle
quelle
Antworten:
Die Verteilung der Anzahl der Schwänze vor Erreichen von Köpfen ist Negativbinomial mit den Parametern und . Sei die Wahrscheinlichkeitsfunktion und die Überlebensfunktion: Für jedes ist die Chance des Spielers, Schwänze vor Köpfen zu haben, und die Chance des Spielers, oder mehr Schwänze vor Köpfen zu haben .10 1 / 2 f G n ≥ 0 f ( n ) n 10 G ( n ) , n 1010 10 1/2 f G n≥0 f(n) n 10 G(n) n 10
Da die Spieler unabhängig würfeln, wird die Chance, dass der erste Spieler gewinnt , wenn er genau Schwänze würfelt, durch Multiplizieren dieser Chance mit der Chance, dass der zweite Spieler oder mehr Schwänze würfelt , gleich .n f ( n ) G ( n )n n f(n)G(n)
Das Summieren aller möglichen ergibt die Gewinnchancen des ersten Spielers alsn
Das sind ungefähr mehr als die Hälfte der Zeit.3%
Im Allgemeinen kann die Antwort durch Ersetzen von durch eine positive ganze Zahl in Form einer hypergeometrischen Funktion angegeben werden: Sie ist gleichm10 m
Bei Verwendung einer voreingenommenen Münze mit einer Wahrscheinlichkeit von Köpfen verallgemeinert sich dies aufp
Hier ist eine0,5325 - 0,843
R
Simulation von einer Million solcher Spiele. Es gibt eine Schätzung von . Ein Binomialhypothesentest zum Vergleich mit dem theoretischen Ergebnis weist einen Z-Score von , was einen unbedeutenden Unterschied darstellt.- 0,843quelle
Wir können das Spiel so modellieren:
Die Lücke in den Gewinnraten ist somitPr ( X= Y) = ∑kPr ( X= k , Y= k ) = ∑kPr ( X= k )2.
Wie Sie vermutet haben, werdenX (und ) im Wesentlichen gemäß einer negativen Binomialverteilung verteilt. Notationen dafür variieren, aber in der Parametrisierung von Wikipedia haben wir Köpfe als "Fehler" und Schwänze als "Erfolg"; wir brauchen r = 10 "Fehler" (Köpfe), bevor das Experiment gestoppt wird, und die Erfolgswahrscheinlichkeit p = 1Y. r = 10 p = 12 . Dann hat die Anzahl der "Erfolge", dieX- 10 ist,
und die Kollisionswahrscheinlichkeit ist
was Mathematica hilfreich mitteilt, ist.Pr ( X- 10 = k ) = ( k + 9k) 2- 10 - k, Pr ( X= Y) = ∑k = 0∞( k+9k)22- 2 k - 20, 764995251162261467≈ 6,6 %
Somit beträgt die Gewinnrate von Spieler B und die von Spieler A .Pr ( Y> X) ≈ 46,7 % 6193804961162261467≈ 53,3 %
quelle
Sei der Fall, dass der Spieler, der würfelt, i Köpfe dreht, bevor der andere Spieler j Köpfe dreht, und sei die ersten beiden Köpfe mit dem Abtastraum wobei h Köpfe bedeutet und t tails, und lass .Eij X {hh,ht,th,tt} pij≡Pr(Eij)
Dann istpij=Pr(Ei−1j−1|X=hh)∗Pr(X=hh)+Pr(Ei−1j|X=ht)∗Pr(X=ht)+Pr(Eij−1|X=th)∗Pr(X=th)+Pr(Eij|X=tt)∗Pr(X=tt)
Angenommen, eine Standardmünze bedeutet, dassPr(X=∗)=1/4 pij=1/4∗[pi−1j−1+pi−1j+pij−1+pij]
Auflösen nach ,pij =1/3∗[pi−1j−1+pi−1j+pij−1]
Aber und , was bedeutet, dass die Rekursion vollständig endet. Eine direkt naive rekursive Implementierung führt jedoch zu einer schlechten Leistung, da sich die Zweige überschneiden.p0j=p00=1 pi0=0
Eine effiziente Implementierung weist eine Komplexität und eine Speicherkomplexität . Hier ist eine einfache, in Haskell implementierte Falte:O(i∗j) O(min(i,j))
UPDATE: Jemand in den obigen Kommentaren fragte, ob man 10 Köpfe hintereinander würfeln sollte oder nicht. Also sei der Fall, dass der Spieler, der würfelt, i Köpfe in einer Reihe dreht, bevor der andere Spieler i Köpfe in einer Reihe dreht, vorausgesetzt, er hat bereits k bzw. l aufeinanderfolgende Köpfe gedreht.Ekl
Es wird wie oben vorgegangen, jedoch nur beim ersten Flip konditioniert: wobeipk,l=1−1/2∗[pl,k+1+pl,0] pil=pii=1,pki=0
Dies ist ein lineares System mit Unbekannten und einer einzigartigen Lösung.i2
Um es in ein iteratives Schema umzuwandeln, fügen Sie einfach eine iterative Zahl und einen Sensitivitätsfaktor :n ϵ
Wählen Sie und Bedacht und führen Sie die Iteration für einige Schritte aus und überwachen Sie den Korrekturterm.ϵ pk,l,0
quelle