Die folgende Antwort ist etwas langweilig, scheint aber die einzige zu sein, die bisher die wirklich genaue Antwort enthält! Normale Approximation oder Simulation oder auch nur das numerische Knacken der genauen Antwort auf ein angemessenes Maß an Genauigkeit, was nicht lange dauert, sind wahrscheinlich der bessere Weg - aber wenn Sie den "mathematischen" Weg suchen, um die genaue Antwort zu erhalten, dann :
Lassen Sie $ X $ span> die Summe der Punkte bezeichnen, die wir in $ 100 $ span> -Würfeln mit Wahrscheinlichkeit sehen Massenfunktion $ p_X (x) $ span>.
Lassen Sie $ Y $ span> die Anzahl der Köpfe in $ 600 $ span> Münzwürfen mit Wahrscheinlichkeitsmassenfunktion bezeichnen $ p_Y (y) $ span>.
Wir suchen $ P (X > Y) = P (X - Y > 0) = P (D > 0) $ span> wobei $ D = X - Y $ span> ist die Differenz zwischen der Summe der Punkte und der Anzahl der Köpfe.
Sei $ Z = -Y $ span> mit der Wahrscheinlichkeitsmassenfunktion $ p_Z (z) = p_Y (-z) $ span>. Dann kann die Differenz $ D = X - Y $ span> als Summe $ D = X + Z $ span umgeschrieben werden > was bedeutet, dass $ X $ span> und $ Z $ span> unabhängig sind, können wir die Wahrscheinlichkeitsmassenfunktion finden von $ D $ span> durch Nehmen der diskreten Faltung der PMFs von $ X $ span > und $ Z $ span>:
$$ p_D (d) = \ Pr (X + Z = d) = \ sum_ {k = - \ infty} ^ {\ infty} \ Pr (X = k \ cap Z = d - k) = \ sum_ {k = - \ infty} ^ {\ infty} p_X (k) p_Z (dk) $$ span>
In der Praxis muss die Summe nur über Werte von $ k $ span> erfolgen, für die die Wahrscheinlichkeiten natürlich ungleich Null sind. Die Idee hier ist genau das, was @IlmariKaronen getan hat. Ich wollte nur die mathematischen Grundlagen dafür aufschreiben.
Jetzt habe ich nicht gesagt, wie man die PMF von $ X $ span> findet, die als Übung übrig bleibt, aber beachte, dass wenn $ X_1, X_2, \ dots, X_ {100} $ span> sind die Anzahl der Punkte auf jedem der 100 unabhängigen Würfelwürfe mit jeweils diskreten einheitlichen PMFs auf $ \ {1, 2, 3, 4, 5, 6 \} $ span>, dann $ X = X_1 + X_2 + \ dots + X_ {100} $ span> und so ...
# Speichern Sie die PMFs von Variablen als Datenrahmen mit den Spalten "value" und "prob".
# Wichtig, dass die Werte fortlaufend sind und aus Gründen der Konsistenz beim Falten aufsteigen.
# also bei Bedarf Zwischenwerte mit der Wahrscheinlichkeit 0 einschließen!
# Funktion zum Überprüfen, ob der Datenrahmen der obigen Definition von PMF entspricht
# Verwenden Sie message_intro, um zu erklären, welche Prüfung fehlschlägt
is.pmf <- Funktion (x, message_intro = "") {
if (! is.data.frame (x)) {stop (paste0 (message_intro, "Kein Datenrahmen"))}
if (! nrow (x) > 0) {stop (paste0 (message_intro, "Dataframe hat keine Zeilen"))}
if (! "value"% in% colnames (x)) {stop (paste0 (message_intro, "No 'value' column"))}
if (! "prob"% in% colnames (x)) {stop (paste0 (message_intro, "No 'prob' column"))}
if (! is.numeric (x $ value)) {stop (paste0 (message_intro, Spalte '' value 'nicht numerisch ")})
if (! all (is.finite (x $ span> value))) {stop (paste0 (message_intro, "Enthält 'value' NA, Inf, NaN usw.?")})
if (! all (diff (x $ value) == 1)) {stop (paste0 (message_intro, "'value' nicht fortlaufend und aufsteigend")}
if (! is.numeric (x $ span> prob)) {stop (paste0 (message_intro, "'prob' Spalte nicht numerisch"))}
if (! all (is.finite (x $ prob))) {stop (paste0 (message_intro, "Enthält 'prob' NA, Inf, NaN usw.?")})
if (! all.equal (sum (x $ span> prob), 1)) {stop (paste0 (message_intro, Spalte '' prob 'summiert sich nicht zu 1 ")})
return (TRUE)
}}
# Funktion zum Falten von PMFs von x und y
# Beachten Sie, dass wir den zweiten Vektor umkehren müssen, um uns in R zu falten
# name1 und name2 werden in der Fehlerberichterstattung für die beiden Eingaben verwendet
convolve.pmf <- Funktion (x, y, name1 = "x", name2 = "y") {
is.pmf (x, message_intro = paste0 ("Prüfen", Name1, "ist gültige PMF:"))
is.pmf (y, message_intro = paste0 ("Prüfen", Name2, "ist gültige PMF:"))
x_plus_y <- data.frame (
value = seq (from = min (x $ value) + min (y $ span> value),
to = max (x $ value) + max (y $ span> value),
durch = 1),
prob = convolve (x $ prob, rev (y $ span> prob), type = "open")
)
return (x_plus_y)
}}
# Sei x_i die Punktzahl beim einzelnen Würfelwurf i
# Hinweis Die PMF von x_i ist für jedes i = 1 bis i = 100 gleich.)
x_i <- data.frame (
Wert = 1: 6,
prob = rep (1/6, 6)
)
# Sei t_i die Summe von x_1, x_2, ..., x_i
# Wir speichern die PMFs von t_1, t_2 ... in einer Liste
t_i <- list ()
t_i [[1]] <- x_i # t_1 ist nur x_1 und hat dieselbe PMF
# PMF von t_i ist die Faltung von PMFs von t_ (i-1) und x_i
für (i in 2: 100) {
t_i [[i]] <-convolve.pmf (t_i [[i-1]], x_i,
name1 = paste0 ("t_i [[", i-1, "]]"), name2 = "x_i")
}}
# Sei x die Summe der Punkte aller 100 unabhängigen Würfelwürfe
x <-t_i [[100]]
is.pmf (x, message_intro = "Überprüfen, ob x gültig ist PMF:")
# Sei y die Anzahl der Köpfe in 600 Münzwürfen, ebenso die Binomialverteilung (600, 0,5):
y <- data.frame (Wert = 0: 600)
y $ prob <-dbinom (y $ span> -Wert, Größe = 600, Prob = 0,5)
is.pmf (y, message_intro = "Überprüfen, ob y PMF gültig ist:")
# Sei z das Negativ von y (beachte, dass wir die Reihenfolge umkehren, um die Werte aufsteigend zu halten)
z <- data.frame (Wert = -rev (y $ value), prob = rev (y $ span> prob))
is.pmf (z, message_intro = "Überprüfen, ob z eine gültige PMF ist:")
# Sei d die Differenz, d = x - y = x + z
d <-convolve.pmf (x, z, name1 = "x", name2 = "z")
is.pmf (d, message_intro = "Überprüfen, ob d eine gültige PMF ist:")
# Prob (X > Y) = Prob (D > 0)
Summe (d [d $ Wert > 0, "prob"])
# [1] 0,9907902
Probieren Sie es online aus!
Nicht, dass es praktisch wichtig wäre, wenn Sie nur nach angemessener Genauigkeit suchen, da der obige Code ohnehin in Sekundenbruchteilen ausgeführt wird, aber es gibt eine Verknüpfung, um die Faltungen für die Summe von 100 unabhängigen, identisch verteilten Variablen durchzuführen: seit 100 = 64 + 32 + 4, ausgedrückt als Summe der Potenzen von 2, können Sie Ihre Zwischenantworten so weit wie möglich mit sich selbst verknüpfen. Schreiben der Zwischensummen für den ersten $ i $ span> Würfelwurf als $ T_i = \ sum_ {k = 1} ^ {k = i} X_k $ span> können wir die PMFs von $ T_2 = X_1 + X_2 $ span>, $ T_4 = T_2 erhalten + T_2 '$ span> (wobei $ T_2' $ span> unabhängig von $ T_2 $ span> ist, aber hat die gleiche PMF) und in ähnlicher Weise $ T_8 = T_4 + T_4 '$ span>, $ T_ {16} = T_8 + T_8' $ span>, $ T_ {32} = T_ {16} + T_ {16} '$ span> und $ T_ {64} = T_ {32} + T_ {32} '$ span>. Wir brauchen zwei weitere Windungen, um die Gesamtpunktzahl aller 100 Würfel als Summe von drei unabhängigen Variablen zu ermitteln: $ X = T_ {100} = (T_ {64} + T_ {32} '') + T_4 '' $ span> und eine endgültige Faltung für $ D = X + Z $ span>. Ich denke, Sie brauchen insgesamt nur neun Faltungen - und für die letzte können Sie sich einfach auf die Teile der Faltung beschränken, die einen positiven Wert für $ D $ span> ergeben . Oder wenn es weniger mühsam ist, die Teile, die die nicht positiven Werte für $ D $ span> angeben, und nehmen dann das Komplement. Vorausgesetzt, Sie wählen den effizientesten Weg, bedeutet dies meiner Meinung nach, dass Ihr schlimmster Fall effektiv achteinhalb Windungen sind. EDIT: und wie @whuber vorschlägt, ist dies auch nicht unbedingt optimal!
Verwenden der von mir identifizierten Neun-Faltungs-Methode mit dem gmp-Paket, damit ich mit bigq
-Objekten arbeiten und eine überhaupt nicht optimierte Schleife schreiben kann Bei den Windungen (da die integrierte Methode von R keine bigq
-Eingaben verarbeitet) dauerte es nur ein paar Sekunden, um den genauen vereinfachten Bruch zu ermitteln:
1342994286789364913259466589226414913145071640552263974478047652925028002001448330257335942966819418087658458889485712017471984746983053946540181650207455490497876104509955761041797420425037042000821811370562452822223052224332163891926447848261758144860052289/1355477899826721990460331878897812400287035152117007099242967137806414779868504848322476153909567683818236244909105993544861767898849017476783551366983047536680132501682168520276732248143444078295080865383592365060506205489222306287318639217916612944423026688
was tatsächlich auf 0,9907902 rundet. Für die genaue Antwort hätte ich das nicht mit zu vielen weiteren Windungen machen wollen, ich konnte fühlen, wie die Zahnräder meines Laptops anfingen zu knarren!