Cum se determină cu ușurință distribuția rezultatelor pentru mai multe zaruri?
On februarie 13, 2021 by adminVreau să calculez distribuția probabilității pentru totalul unei combinații de zaruri.
Îmi amintesc că probabilitatea este numărul de combinații care totalizează acest număr peste numărul total de combinații (presupunând că zarurile au o distribuție uniformă).
Care sunt formulele
- Numărul total de combinații
- Numărul de combinații care totalizează un anumit număr
Comentarii
- Cred că ar trebui să tratați $ (X_1 = 1, X_2 = 2) $ și $ (X_1 = 2, X_2 = 1) $ ca diferiți evenimente.
Răspuns
Soluții exacte
Numărul de combinații din $ n $ este, desigur, $ 6 ^ n $ .
Aceste calcule sunt cel mai ușor realizate folosind funcția de generare a probabilității pentru o matriță,
$$ p (x) = x + x ^ 2 + x ^ 3 + x ^ 4 + x ^ 5 + x ^ 6 = x \ frac {1-x ^ 6} {1-x}. $$
(De fapt, aceasta este $ 6 $ de ori mai mare decât pgf – voi avea grijă de factorul $ 6 $ la sfârșit.)
Pgf pentru $ n $ este $ p (x) ^ n $ . Putem calcula acest lucru destul de direct – nu este o formă închisă, ci este una utilă – folosind teorema binomială:
$$ p (x ) ^ n = x ^ n (1 – x ^ 6) ^ n (1 – x) ^ {- n} $$
$ $ = x ^ n \ left (\ sum_ {k = 0} ^ {n} {n \ alege k} (-1) ^ kx ^ {6k} \ right) \ left (\ sum_ {j = 0} ^ { \ infty} {-n \ choose j} (-1) ^ jx ^ j \ right). $$
Numărul de modalități de a obține o sumă egală cu $ m $ pe zar este coeficientul $ x ^ m $ din acest produs, pe care îl putem izola ca
$$ \ sum_ {6k + j = m – n} {n \ alege k} {- n \ alege j} (- 1) ^ {k + j} . $$
Suma este peste toate $ k $ și $ j nenegative $ pentru care $ 6k + j = m – n $ ; de aceea este finit și are doar aproximativ $ (m-n) / 6 $ termeni. De exemplu, numărul de moduri de a totaliza $ m = 14 $ în $ n = 3 $ este o sumă de doar doi termeni, deoarece $ 11 = 14-3 $ poate fi scris numai ca $ 6 \ cdot 0 + 11 $ și $ 6 \ cdot 1 + 5 $ :
$$ – {3 \ alegeți 0} {-3 \ alegeți 11} + {3 \ alegeți 1} {- 3 \ alegeți 5} $$
$$ = 1 \ frac {(- 3) (- 4) \ cdots (-13)} {11!} + 3 \ frac {(- 3) (- 4) \ cdots (-7)} {5!} $$
$$ = \ frac {1} {2} 12 \ cdot 13 – \ frac {3} {2} 6 \ cdot 7 = 15 . $$
(De asemenea, puteți fi inteligent și rețineți că răspunsul va fi același pentru $ m = 7 $ de simetria 1 < -> 6, 2 < -> 5 și 3 < -> 4 și există o singură modalitate de a extinde $ 7 – 3 $ ca $ 6 k + j $ ; și anume, cu $ k = 0 $ și $ j = 4 $ , oferind
$$ {3 \ choose 0} {- 3 \ choose 4} = 15 \ text {.} $$
Prin urmare, probabilitatea este egală cu $ 15/6 ^ 3 $ = $ 5/36 $ , aproximativ 14%.
Până când acest lucru devine dureros, teorema limitei centrale oferă aproximări bune (cel puțin la termenii centrali în care $ m $ este între $ \ frac {7 n} {2} – 3 \ sqrt {n} $ și $ \ frac {7 n} {2} + 3 \ sqrt { n} $ : pe o bază relativă, aproximările pe care le oferă pentru valorile cozii devin din ce în ce mai proaste pe măsură ce $ n $ crește).
Văd că această formulă este dată în articolul Wikipedia referințe Srikant, dar nu se oferă nicio justificare și nici nu se dau exemple. Dacă este posibil ca această abordare să pară prea abstractă, declanșați sistemul dvs. de algebră computer preferat și cereți-i să extindă puterea $ n ^ {\ text {th}} $ class = „math-container”> $ x + x ^ 2 + \ cdots + x ^ 6 $ : puteți citi întregul set de valori imediat. De exemplu , un Mathematica one-liner este
With[{n=3}, CoefficientList[Expand[(x + x^2 + x^3 + x^4 + x^5 + x^6)^n], x]]
Comentarii
- Codul mathica va funcționa cu wolfram alpha?
- Asta funcționează. Am încercat versiunea anterioară, dar nu am putut face sens.
- @Srikant: Extindeți [Suma [x ^ i, {i, 1,6}] ^ 3] funcționează și în WolframAlpha
- @ A.Wilson Cred că multe dintre aceste referințe oferiți o cale clară către generalizare, care în acest exemplu este $ (x + x ^ 2 + \ cdots + x ^ 6) (x + x ^ 2 + x ^ 3 + x ^ 4) ^ 3 $. Dacă doriți ca
R
cod să calculeze aceste lucruri, consultați stats.stackexchange.com/a/116913 pentru sistem complet implementat. Ca un alt exemplu, codul Mathematica esteClear[x, d]; d[n_, x_] := Sum[x^i, {i, 1, n}]; d[6, x] d[4, x]^3 // Expand
- Rețineți că @whuber ‘ Clarificarea este pentru 1d6 + 3d4, iar asta ar trebui să vă ducă acolo. Pentru un wdn + vdm arbitrar, (x + x ^ 2 + … + x ^ w) ^ n (x + x ^ 2 + … + x ^ v) ^ m. Termenii suplimentari sunt polinoame construite și înmulțite cu produsul în același mod.
Răspuns
Un alt mod de a calcularea rapidă a distribuției probabilității unei aruncări de zaruri ar fi utilizarea unui calculator specializat conceput tocmai în acest scop.
Torben Mogensen , un CS profesor la DIKU are o rolă de zaruri excelentă numită Troll .
Calculatorul de probă și calculatorul de probă Troll imprimă distribuția probabilității (pmf, histogramă și opțional cdf sau ccdf), media, răspândirea și deviația medie pentru o varietate de mecanisme complicate de lansare a zarurilor. Iată câteva exemple care prezintă limbajul de rulare a zarurilor lui Troll:
Trageți 3 zaruri pe 6 fețe și sumați-le: sum 3d6
.
Aruncați 4 zaruri cu 6 fețe, păstrați cele mai mari 3 și sumați-le: sum largest 3 4d6
.
Aruncați o matriță pe 6 fețe „explodând” (adică orice când apare un „6”, adăugați 6 la total și redați din nou): sum (accumulate y:=d6 while y=6)
.
Troll „s SML cod sursă este disponibil, dacă doriți să vedeți cum este implementat.
Profesorul Morgensen are, de asemenea, un Lucrare de 29 de pagini, „ Mecanisme de rulare a zarurilor în RPG-uri ”, în care discută multe dintre mecanismele de rulare a zarurilor implementate de Troll și unele dintre matematica din spatele lor.
O piesă similară de software gratuit, open-source este Dicelab , care funcționează atât pe Linux, cât și pe Windows.
Răspuns
Există „un mod foarte elegant de a calcula combinațiile sau probabilitatea se află într-o foaie de calcul (cum ar fi Excel) care calculează circumvoluțiile direct.
O voi face în termeni de probabilități și o voi ilustra pentru zaruri cu șase fețe, dar o puteți face pentru zaruri cu orice număr de laturi (inclusiv adăugarea unor diferite).
( de asemenea, este ușor și în ceva de genul R sau matlab care va face contururi)
Începeți cu o foaie curată, în câteva coloane și mutați în jos o grămadă de rânduri din partea de sus (mai mult de 6) .
-
pune valoarea 1 într-o celulă. Aceasta este probabilitățile asociate cu 0 zaruri. Puneți un 0 în stânga lui; aceasta este coloana valorică – continuați în jos de acolo cu 1,2,3 în jos în măsura în care aveți nevoie.
-
mutați o coloană la dreapta și în jos un rând din „1”. introduceți formula „= sum (” apoi săgeata stânga săgeată sus (pentru a evidenția celula cu 1 în ea), apăsați „:” (pentru a începe să introduceți un interval) și apoi săgeată sus de 5 ori, urmată de „) / 6 „și apăsați Enter – astfel încât să ajungeți cu o formulă ca
=sum(c4:c9)/6
(unde aiciC9
este celula cu 1 în ea) .Apoi copiați formula și lipiți-o în cele 5 celule de sub ea. Fiecare ar trebui să conțină 0,166667 (ish).
Nu tastați nimic în celulele goale aceste formule consultați!
-
mutați în jos 1 și în dreapta 1 din partea de sus a acelei coloane de valori și lipiți …
… în total alte 11 valori. Acestea vor fi probabilitățile pentru două zaruri.
Nu contează dacă lipiți prea multe, veți obține doar zero.
-
repetați pasul 3 pentru următoarea coloană pentru trei zaruri și din nou pentru patru, cinci zaruri etc.
Vedem aici că probabilitatea de a arunca $ 12 $ pe 4d6 este 0,096451 (dacă înmulțiți cu $ 4 ^ 6 $ o veți putea scrie ca o fracție exactă).
Dacă sunteți expert în Excel – lucruri precum copierea unei formule dintr-o celulă și lipirea în multe celule într-o coloană, puteți genera toate tabelele până la 10d6 în aproximativ un minut sau cam așa (posibil mai repede dacă ați făcut-o de câteva ori).
Dacă doriți numărarea combinațiilor în loc de probabilități, nu împărțiți la 6.
Dacă doriți zaruri cu un număr diferit de fețe, puteți însuma $ k $ (mai degrabă decât 6) celule și apoi împărțiți cu $ k $. Puteți amesteca zaruri între coloane (de ex.faceți o coloană pentru d6 și una pentru d8 pentru a obține funcția de probabilitate pentru d6 + d8):
Comentarii
- Acest lucru este foarte util pentru cineva ca mine care vrea doar o modalitate de a o face, fără a fi nevoie să înțeleagă! Dacă ‘ nu vă interesează volatilitatea funcției
OFFSET()
, puteți face această dinamică folosind un interval numit. De exemplu, am făcut un interval numitDiceSize
pentru a menține numărul de laturi și a pune primul ” 1 ” probabilitate în B23. Am folosit un interval dinamic numit KingSum care se referă la=OFFSET('Dice Rolls'!$A$22,-1*DiceSize,,DiceSize,1)
. Aș putea folosi apoi formula=SUM(OFFSET(KingSum,ROW(A1),COLUMN(A1)))/DiceSize
în celula C23, târâtă pe o suprafață mare pentru a oferi un tabel bazat pe DiceSize.
Răspuns
$ \ newcommand {red} {\ color {red}} $ $ \ newcommand {blue} {\ color {blue}} $
Lasă prima moarte să fie roșie și a doua să fie neagră. Apoi, există 36 de rezultate posibile:
\ begin {array} {c | c | c | c | c | c | c | c} & 1 & 2 & 3 & 4 & 5 & 6 \\\ hline \ red {1} & \ red {1}, 1 & \ red {1}, 2 & \ red {1}, 3 & \ red {1}, 4 & \ red {1}, 5 & \ red {1}, 6 \\ & \ albastru {^ 2} & \ blue {^ 3} & \ blue {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} \\\ hline \ roșu {2} & \ red {2}, 1 & \ red {2}, 2 & \ red {2}, 3 & \ red {2}, 4 & \ red {2}, 5 & \ red {2}, 6 \\ & \ blue {^ 3} & \ blue {^ 4}
\ blue {^ 5} & \ blue {^ 6} & \ blue { ^ 7} & \ blue {^ 8} \\\ hline \ red {3} & \ red {3}, 1 & \ red {3}, 2 & \ red {3}, 3 & \ roșu {3}, 4 & \ red {3}, 5 & \ red {3}, 6 \\ & \ blue {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8} & \ blue {^ 9} \\\ hline \ red {4} & \ red {4}, 1 & \ red {4}, 2 & \ red {4}, 3 & \ red {4}, 4 & \ red {4}, 5 & \ red {4}, 6 \\ & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8 } & \ albastru {^ 9} & \ blue {^ {10}} \\\ hline \ red {5} & \ red {5 }, 1 & \ red {5}, 2 & \ red {5}, 3 & \ red {5}, 4 & \ red {5}, 5 & \ red {5}, 6 \\ & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8} & \ blue {^ 9} & \ blue {^ {10}} & \ blue {^ {11}} \\\ hline \ red {6} & \ red {6}, 1 & \ red {6}, 2 & \ red {6}, 3 & \ red {6}, 4 & \ red {6}, 5 & \ red {6}, 6 \\ & \ albastru {^ 7} & \ blue {^ 8} & \ blue {^ 9} & \ blue {^ {10}} & \ blue {^ {11}} & \ blue {^ {12} } \\\ hline \ end {array}
Fiecare dintre Aceste 36 ($ \ red {\ text {red}}, \ text {black} $) rezultate sunt la fel de probabile.
Când însumați numerele de pe fețe (total în $ \ blue {\ text {albastru}} $), câteva dintre rezultatele (roșu, negru) ajung cu același total – puteți vedea acest lucru cu tabelul din întrebarea dvs.
Deci, de exemplu, există doar unul modalitate de a obține un total de 2 $ (adică numai evenimentul ($ \ red {1}, 1 $)), dar există două modalități de a obține $ 3 $ (adică evenimentele elementare ($ \ red {2}, 1 $) și ($ \ red {1}, 2 $)). Deci, un total de 3 $ este de două ori mai probabil să vină ca 2 $. În mod similar, există trei modalități de a obține 4 $, patru modalități de a obține 5 $ și așa mai departe .
Acum, deoarece aveți 36 de rezultate posibile (roșu, negru), numărul total de moduri de a obține toate totalurile diferite este, de asemenea, 36, deci ar trebui să împărțiți la 36 la sfârșit. Probabilitatea dvs. totală va fi 1, așa cum ar trebui.
Comentarii
- Uau, tabelul este frumos!
- Foarte drăguț, într-adevăr
Răspuns
Soluție aproximativă
Am explicat soluția exactă mai devreme (vezi mai jos). Voi oferi acum o soluție aproximativă care să se potrivească mai bine nevoilor dumneavoastră.
Fie:
$ X_i $ să fie rezultatul unei aruncări a zarurilor cu care se confruntă $ s $ unde $ i = 1, … n $.
$ S $ este totalul tuturor $ n $ zarurilor.
$ \ bar {X} $ să fie media eșantionului.
Prin definiție, avem:
$ \ bar {X} = \ frac {\ sum_iX_i} {n} $
Cu alte cuvinte,
$ \ bar {X} = \ frac {S} {n} $
Ideea este acum de a vizualiza procesul de observare a $ {X_i} $ ca rezultat al aruncării acelorași zaruri $ n $ ori în loc ca rezultat al aruncării $ n $ zarurilor. Astfel, putem invoca teorema limitei centrale (ignorând tehnicismele asociate cu trecerea de la distribuția discretă la continuă), avem ca $ n \ rightarrow \ infty $:
$ \ bar {X} \ sim N ( \ mu, \ sigma ^ 2 / n) $
unde,
$ \ mu = (s + 1) / 2 $ este media aruncării unui singur zar și
$ \ sigma ^ 2 = (s ^ 2-1) / 12 $ este varianța asociată.
Cele de mai sus sunt în mod evident o aproximare, deoarece distribuția subiacentă $ X_i $ are discretă a sustine.
Dar,
$ S = n \ bar {X} $.
Astfel, avem:
$ S \ sim N (n \ mu, n \ sigma ^ 2) $.
Soluție exactă
Wikipedia are o scurtă explicație despre cum se calculează probabilitățile necesare. Voi elabora puțin mai mult de ce explicația de acolo are sens. În măsura posibilului, am folosit o notație similară articolului Wikipedia.
Să presupunem că ai $ n $ zaruri fiecare cu $ s $ fețe și vrei să calculezi probabilitatea ca o singură aruncare din toate $ n $ zaruri totalul se ridică la $ k $. Abordarea este după cum urmează:
Definiți:
$ F_ {s, n} (k) $: Probabilitatea de a obține un total de $ k $ pe o singură rolă de $ n $ mărește cu $ s $ fețe.
Prin definiție, avem:
$ F_ {s, 1} (k) = \ frac {1} {s} $
Cele de mai sus afirmă că dacă aveți doar un zar cu $ s $ se confruntă cu probabilitatea de a obține un total de $ k $ între 1 și s este familiarul $ \ frac {1} {s} $.
Luați în considerare situația când aruncați două zaruri: puteți obține o sumă de $ k $ după cum urmează: Prima aruncare este între 1 și $ k-1 $ și aruncarea corespunzătoare pentru a doua este între $ k -1 $ la 1 $ $. Astfel, avem:
$ F_ {s, 2} (k) = \ sum_ {i = 1} ^ {i = k-1} {F_ {s, 1} (i) F_ { s, 1} (ki)} $
Acum ia în considerare o aruncare de trei zaruri: Puteți obține o sumă de $ k $ dacă aruncați 1 la $ k-2 $ pe primul zar și suma pentru celelalte două zaruri este cuprinsă între $ k-1 $ până la 2 $ $. Astfel,
$ F_ {s, 3} (k) = \ sum_ {i = 1} ^ {i = k-2} {F_ {s, 1} (i) F_ {s, 2 } (ki)} $
Continuând logica de mai sus, obținem ecuația recursivă:
$ F_ {s, n} (k) = \ sum_ {i = 1} ^ {i = k-n + 1} {F_ {s, 1} (i) F_ {s, n-1} (ki)} $
Consultați linkul Wikipedia pentru mai multe detalii.
Comentarii
- @Srikant Răspuns excelent, dar funcția respectivă se rezolvă la ceva aritmetic (adică: nu recursiv)?
- @C. Ross Din păcate, nu cred. Dar, bănuiesc că recursivitatea nu ar trebui să fie atât de dură, atâta timp cât este vorba despre n-uri mici și mici. Puteți pur și simplu să construiți un tabel de căutare și să îl utilizați în mod repetat, după cum este necesar.
- Pagina Wikipedia pe care ați conectat-o are o formulă simplă nerecursivă, care este o singură sumă. O derivare este în răspunsul whuber ‘.
- Ancora legăturii wiki este moartă, știți un înlocuitor?
Răspuns
Aceasta este de fapt o întrebare surprinzător de complicată. Din fericire pentru dvs., există o soluție exactă care este foarte bine explicată aici:
http://mathworld.wolfram.com/Dice.html
Probabilitatea pe care o căutați este dată de ecuația (10): „Probabilitatea de a obține p puncte (o aruncare de p) pe n zaruri cu latură s”.
În cazul dvs.: p = scorul observat (suma tuturor zarurilor), n = numărul de zaruri, s = 6 (zaruri pe 6 fețe). Aceasta vă oferă următoarea funcție de masă de probabilitate:
$$ P (X_n = p) = \ frac {1} {s ^ n} \ sum_ {k = 0} ^ {\ lfloor (pn) / 6 \ rfloor} (-1) ^ k {n \ alege k} {p-6k-1 \ alege n-1} $$
Comentarii
- Bine ați venit pe site-ul nostru, Felix!
Răspundeți
Funcțiile caracteristice pot face calculele care implică sumele și diferențele variabile aleatoare foarte ușoare. Mathematica are o mulțime de funcții pentru a lucra cu distribuții statistice, inclusiv un program încorporat pentru a transforma o distribuție în funcția sa caracteristică.
Aș dori pentru a ilustra acest lucru cu două exemple concrete: (1) Să presupunem că ați dori să determinați rezultatele aruncării unei colecții de zaruri cu diferite numere de laturi, de exemplu, aruncați două zaruri cu șase fețe plus unul cu opt fețe mori (adică 2d6 + d8 )?Sau (2) să presupunem că ați vrut să găsiți diferența dintre două aruncări de zaruri (de ex., d6-d6 )?
O modalitate ușoară de a face acest lucru ar fi utilizarea funcțiilor caracteristice a distribuțiilor uniforme discrete subiacente. Dacă o variabilă aleatorie $ X $ are o funcție de masă de probabilitate $ f $, atunci funcția sa caracteristică $ \ varphi_X (t) $ este doar Transformată Fourier de $ f $, adică $ \ varphi_X (t) = \ mathcal {F} \ {f \} (t) = E [e ^ {it X }] $. O teoremă ne spune:
Dacă variabilele aleatoare independente $ X $ și $ Y $ au funcții de masă corespunzătoare de probabilitate $ f $ și $ g $, atunci pmf $ h $ din suma $ X + Y $ din aceste RV-uri este convoluție a pmfs $ h (n) = (f \ ast g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (nm) $.
Putem folosi proprietatea de convoluție a transformatelor Fourier pentru a redefini acest lucru mai simplu în termeni de funcții caracteristice:
Funcția caracteristică $ \ varphi_ {X + Y} (t) $ din suma variabilelor aleatoare independente $ X $ și $ Y $ este egal cu produsul funcțiilor lor caracteristice $ \ varphi_ {X} (t) \ varphi_ {Y} (t) $.
Această funcție Mathematica va face funcția caracteristică pentru o matriță laterală:
MakeCf[s_] := Module[{Cf}, Cf := CharacteristicFunction[DiscreteUniformDistribution[{1, s}], t]; Cf]
PMf-ul unei distribuții poate fi recuperat din funcția sa caracteristică, deoarece Transformatele Fourier sunt inversabile. Iată codul Mathematica pentru a face acest lucru:
RecoverPmf[Cf_] := Module[{F}, F[y_] := SeriesCoefficient[Cf /. t -> -I*Log[x], {x, 0, y}]; F]
Continuând exemplul nostru, să fie F pmf care rezultă din 2d6 + d8.
F := RecoverPmf[MakeCf[6]^2 MakeCf[8]]
Există rezultate de $ 6 ^ 2 \ cdot 8 = 288 $. Domeniul de asistență al lui F este $ S = \ {3, \ ldots, 20 \} $. Trei este minimul pentru că lansezi trei zaruri. Și douăzeci este maximul pentru că $ 20 = 2 \ cdot 6 + 8 $. Dacă vrei să vezi imaginea lui F, calculează
In:= F /@ Range[3, 20] Out= {1/288, 1/96, 1/48, 5/144, 5/96, 7/96, 13/144, 5/48, 1/9, 1/9, \ 5/48, 13/144, 7/96, 5/96, 5/144, 1/48, 1/96, 1/288}
Dacă doriți să cunoașteți numărul de rezultate care însumează 10, calculați
In:= 6^2 8 F[10] Out= 30
Dacă variabilele aleatoare independente $ X $ și $ Y $ au funcții de probabilitate corespunzătoare $ f $ și $ g $, atunci pmf $ h $ din diferența $ X – Y $ a acestor RV-uri este corelare încrucișată a pmfs $ h (n) = (f \ stea g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (n + m) $ .
Putem folosi proprietatea de corelație încrucișată a transformatelor Fourier pentru a reda acest lucru mai simplu în termeni de funcții caracteristice:
Funcția caracteristică $ \ varphi_ {XY} (t) $ din diferența a două variabile aleatoare independente $ {X, Y} $ este egal cu produsul funcției caracteristice $ \ varphi_ {X} (t) $ și $ \ varphi_ {Y} (- t) $ (NB semnul negativ din fața variabilei t în al doilea cha funcție caracteristică).
Deci, folosind Mathematica pentru a găsi pmf G din d6-d6:
G := RecoverPmf[MakeCf[6] (MakeCf[6] /. t -> -t)]
Există 6 $ ^ 2 = 36 $ rezultate. Domeniul de asistență al lui G este $ S = \ {- 5, \ ldots, 5 \} $. -5 este min, deoarece -5 $ = 1-6 $. Și 5 este maximul, deoarece 6-1 $ = 5 $. Dacă doriți să vedeți imaginea lui G, calculați
In:= G /@ Range[-5, 5] Out= {1/36, 1/18, 1/12, 1/9, 5/36, 1/6, 5/36, 1/9, 1/12, 1/18, 1/36}
Comentarii
- Desigur, pentru distribuții discrete, inclusiv distribuții de suport finit (ca cele în cauză aici), cf este doar funcția de generare a probabilității evaluată la x = exp (it), făcându-l o modalitate mai complicată de codificare a acelorași informații.
- @whuber: După cum spuneți, cf, mgf și pgf sunt mai mult sau mai puțin la fel și ușor de transformat unul în altul, totuși Mathematica are un cod încorporat care funcționează cu toate distribuțiile de probabilitate despre care știe, în timp ce ‘ nu are încorporat pgf. Acest lucru face ca codul Mathematica pentru lucrul cu sume (și diferențe) de zaruri folosind cfs să fie deosebit de elegant pentru a construi, indiferent de complexitatea expresiei zarurilor, așa cum sper că am demonstrat mai sus. În plus, nu ‘ te doare să știi cum cfs, FT, convoluții și corelații încrucișate pot ajuta la rezolvarea unor astfel de probleme.
- @Elisha: Puncte bune , toti. Cred că ceea ce mă întreb cel mai mult este dacă cele zece linii de cod Mathematica sunt într-adevăr mai ” elegant ” sau mai eficiente decât singura linie pe care am propus-o mai devreme (sau chiar mai scurtă linia pe care Srikant a alimentat-o către Wolfram Alpha). Bănuiesc că manipulările interne cu funcții caracteristice sunt mai grele decât simplele circumvoluții necesare pentru a multiplica polinoamele. Cu siguranță, acestea din urmă sunt mai ușor de implementat în majoritatea celorlalte medii software, așa cum indică răspunsul Glen_b ‘. Avantajul abordării dvs. este o generalitate mai mare.
Răspuns
Iată un alt mod de a calcula probabilitatea distribuirea sumei a două zaruri de mână folosind convoluții.
Pentru a păstra exemplul într-adevăr simplu, vom calcula distribuția probabilității sumei unei matrițe cu trei fețe (d3) a cărei variabilă aleatorie o vom numi X și o matriță cu două fețe (d2 ) a cărei variabilă aleatoare o vom numi Y.
Veți face un tabel. În rândul de sus, scrieți distribuția de probabilitate a lui X (rezultatele rotirii unui d3 corect). În coloana din stânga , scrieți distribuția de probabilitate a lui Y (rezultatele obținerii unui d2 corect).
Veți construi produsul exterior al rândul superior al probabilităților cu coloana din stânga a probabilităților. De exemplu, celula din dreapta jos va fi produsul lui Pr [X = 3] = 1/3 ori Pr [Y = 2] = 1/2 așa cum se arată în figura însoțitoare. În exemplul nostru simplist, toate celulele sunt egale cu 1/6.
Apoi, veți însuma de-a lungul liniilor oblice ale matricei produsului exterior așa cum se arată în diagrama însoțitoare. Fiecare linie oblică trece prin una sau mai multe celule pe care le-am „colorat la fel: linia superioară trece printr-o celulă albastră, următoarea linie trece prin două celule roșii și așa mai departe.
Fiecare dintre sume de-a lungul oblicurilor reprezintă o probabilitate în distribuția rezultată. De exemplu, suma celulelor roșii este egală cu probabilitatea celor două zaruri însumând la 3. Aceste probabilități sunt afișate în partea dreaptă a diagramei însoțitoare.
Această tehnică poate fi utilizată cu oricare două distribuții discrete. cu sprijin finit. Și îl puteți aplica iterativ. De exemplu, dacă doriți să cunoașteți distribuția a trei zaruri cu șase fețe (3d6), puteți calcula mai întâi 2d6 = d6 + d6; apoi 3d6 = d6 + 2d6.
Există un limbaj de programare gratuit (dar închis) numit J . Este un limbaj bazat pe matrice, cu rădăcinile sale în APL. Are operatori încorporați pentru a efectua produse externe și sume de-a lungul oblicelor din matrice, făcând tehnica pe care am ilustrat-o destul de simplă de implementat.
În următorul cod J, definesc două verbe. Mai întâi, verbul d
construiește o matrice care reprezintă pmf-ul unei matrițe pe latură. De exemplu, d 6
este pmf-ul unei matrițe pe 6 fețe. În al doilea rând, verbul conv
găsește produsul exterior al două matrice și sume de-a lungul liniilor oblice. Deci, conv~ d 6
tipărește pmf din 2d6:
d=:$% conv=:+//.@(*/) |:(2+i.11),:conv~d 6 2 0.0277778 3 0.0555556 4 0.0833333 5 0.111111 6 0.138889 7 0.166667 8 0.138889 9 0.111111 10 0.0833333 11 0.0555556 12 0.0277778
După cum puteți vedea, J este criptic, dar concis .
Răspuns
Iubesc numele de utilizator! Bravo 🙂
Rezultatele pe care ar trebui să le numărați sunt aruncările de zaruri, toate de 6 $ \ ori 6 = 36 $ dintre ele așa cum se arată în tabelul dvs.
De exemplu, $ \ frac {1} {36} $ din momentul în care suma este de 2 $ și $ \ frac {2} {36} $ din momentul în care suma este de 3 $ și $ \ frac {4} {36} $ din timp suma este de $ 4 $ și așa mai departe.
Comentarii
- Eu ‘ sunt foarte confuz de acest. Am răspuns la o întrebare începând de la cineva numit die_hard, care aparent nu mai există, apoi am găsit răspunsul meu atașat acestui fir vechi!
- Răspunsul dvs. la întrebarea de la stats.stackexchange.com/questions/173434/… a fost îmbinat cu răspunsurile la acest duplicat.
Răspuns
Puteți rezolva acest lucru cu o formulă recursivă. În acest caz, probabilitățile aruncărilor cu $ n $ zaruri sunt calculate de rulările cu $ n-1 $ zaruri.
$$ a_n (l) = \ sum_ {l-6 \ leq k \ leq l-1 \\ \ text {și} n-1 \ leq k \ leq 6 (n-1)} a_ {n-1} (k) $$
Prima limită pentru k în însumarea sunt cele șase numere precedente. De exemplu, dacă doriți să aruncați 13 cu 3 zaruri, puteți face acest lucru dacă primele două zaruri aruncă între 7 și 12.
A doua limită pentru k în însumare este limitele cu care puteți arunca n-1 zaruri
Rezultatul:
1 1 1 1 1 1 1 2 3 4 5 6 5 4 3 2 1 1 3 6 10 15 21 25 27 27 25 21 15 10 6 3 1 1 4 10 20 35 56 80 104 125 140 146 140 125 104 80 56 35 20 10 4 1 1 5 15 35 70 126 205 305 420 540 651 735 780 780 735 651 540 420 305 205 126 70 35 15 5 1
edit: Răspunsul de mai sus a fost un răspuns de la o altă întrebare care a fost combinată cu întrebarea de C.Ross
Codul de mai jos arată cum au fost efectuate calculele pentru răspunsul respectiv (la întrebarea care cere 5 zaruri) în R. Sunt similare cu sumele efectuate în Excel în răspunsul de Glen B.
# recursive formula nextdice <- function(n,a,l) { x = 0 for (i in 1:6) { if ((l-i >= n-1) & (l-i<=6*(n-1))) { x = x+a[l-i-(n-2)] } } return(x) } # generating combinations for rolling with up to 5 dices a_1 <- rep(1,6) a_2 <- sapply(2:12,FUN = function(x) {nextdice(2,a_1,x)}) a_3 <- sapply(3:18,FUN = function(x) {nextdice(3,a_2,x)}) a_4 <- sapply(4:24,FUN = function(x) {nextdice(4,a_3,x)}) a_5 <- sapply(5:30,FUN = function(x) {nextdice(5,a_4,x)})
Comentarii
- @ user67275 întrebarea dvs. a fost combinată cu această întrebare. Dar mă întreb care a fost ideea ta din spatele formulei tale: ” Am folosit formula: nu există modalități de a obține 8: 5_H_2 = 6_C_2 = 15 ” ?
Răspuns
O abordare este de a spune că probabilitatea $ X_n = k $ este coeficientul de $ x ^ {k} $ în extinderea funcției de generare $$ \ left (\ frac {x ^ 6 + x ^ 5 + x ^ 4 + x ^ 3 + x ^ 2 + x ^ 1} {6} \ right) ^ n = \ left (\ frac {x (1-x ^ 6)} {6 (1-x)} \ right) ^ n $$
Deci de exemplu, cu șase zaruri și o țintă de $ k = 22 $ , veți găsi $ P (X_6 = 22) = \ frac {10} {6 ^ 6} $. Acel link (către o întrebare math.stackexchange) oferă și alte abordări
Lasă un răspuns