Come determinare facilmente la distribuzione dei risultati per più dadi?
Su Febbraio 13, 2021 da adminVoglio calcolare la distribuzione di probabilità per il totale di una combinazione di dadi.
Ricordo che la probabilità di è il numero di combinazioni che totalizzano quel numero rispetto al numero totale di combinazioni (assumendo che i dadi abbiano una distribuzione uniforme).
A cosa servono le formule
- Il numero di combinazioni totali
- Il numero di combinazioni che totalizzano un certo numero
Commenti
- Penso che dovresti considerare $ (X_1 = 1, X_2 = 2) $ e $ (X_1 = 2, X_2 = 1) $ come diversi eventi.
Risposta
Soluzioni esatte
Il numero di combinazioni in $ n $ genera è ovviamente $ 6 ^ n $ .
Questi calcoli vengono eseguiti più facilmente utilizzando la funzione di generazione di probabilità per un dado,
$$ p (x) = x + x ^ 2 + x ^ 3 + x ^ 4 + x ^ 5 + x ^ 6 = x \ frac {1-x ^ 6} {1-x}. $$
(In realtà questo è $ 6 $ volte il pgf – Mi prenderò cura del fattore di $ 6 $ alla fine.)
Il pgf per $ n $ rotoli è $ p (x) ^ n $ . Possiamo calcolarlo abbastanza direttamente – non è una forma chiusa ma “utile – usando il teorema binomiale:
$$ p (x ) ^ n = x ^ n (1 – x ^ 6) ^ n (1 – x) ^ {- n} $$
$ $ = x ^ n \ sinistra (\ sum_ {k = 0} ^ {n} {n \ scegli k} (-1) ^ kx ^ {6k} \ destra) \ sinistra (\ sum_ {j = 0} ^ { \ infty} {-n \ choose j} (-1) ^ jx ^ j \ right). $$
Il numero di modi per ottenere una somma uguale a $ m $ sul dado è il coefficiente di $ x ^ m $ in questo prodotto, che possiamo isolare come
$$ \ sum_ {6k + j = m – n} {n \ choose k} {- n \ choose j} (- 1) ^ {k + j} . $$
La somma è su tutti $ k $ e $ j $ per cui $ 6k + j = m – n $ ; quindi è finito e ha solo circa $ (m-n) / 6 $ termini. Ad esempio, il numero di modi per totalizzare $ m = 14 $ in $ n = 3 $ è una somma di due soli termini, perché $ 11 = 14-3 $ può essere scritto solo come $ 6 \ cdot 0 + 11 $ e $ 6 \ cdot 1 + 5 $ :
$$ – {3 \ scegli 0} {-3 \ scegli 11} + {3 \ scegli 1} {- 3 \ scegli 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 . $$
(Puoi anche essere intelligente e notare che la risposta sarà la stessa per $ m = 7 $ di la simmetria 1 < -> 6, 2 < -> 5 e 3 < -> 4 e cè un solo modo per espandere $ 7 – 3 $ come $ 6 k + j $ ; vale a dire, con $ k = 0 $ e $ j = 4 $ , dando
$$ {3 \ choose 0} {- 3 \ choose 4} = 15 \ text {.} $$
La probabilità quindi è uguale $ 15/6 ^ 3 $ = $ 5/36 $ , circa il 14%.
Nel momento in cui questo diventa doloroso, il teorema del limite centrale fornisce buone approssimazioni (almeno per i termini centrali dove $ m $ è compreso tra $ \ frac {7 n} {2} – 3 \ sqrt {n} $ e $ \ frac {7 n} {2} + 3 \ sqrt { n} $ : su base relativa, le approssimazioni che offre per i valori di coda peggiorano man mano che $ n $ diventa grande).
Vedo che questa formula è fornita nellarticolo di Wikipedia Riferimenti a Srikant ma non viene fornita alcuna giustificazione né vengono forniti esempi. Se per caso questo approccio sembra troppo astratto, avvia il tuo sistema di algebra computerizzato preferito e chiedigli di espandere la $ n ^ {\ text {th}} $ di $ x + x ^ 2 + \ cdots + x ^ 6 $ : puoi leggere lintero insieme di valori subito. Ad esempio , una riga di Mathematica è
With[{n=3}, CoefficientList[Expand[(x + x^2 + x^3 + x^4 + x^5 + x^6)^n], x]]
Commenti
- Quel codice matematico funzionerà con wolfram alpha?
- Funziona. Ho provato la tua versione precedente ma non riuscivo a dare alcun senso alloutput.
- @Srikant: Expand [Sum [x ^ i, {i, 1,6}] ^ 3] funziona anche in WolframAlpha
- @ A.Wilson Credo che molti di questi riferimenti fornire un percorso chiaro alla generalizzazione, che in questo esempio è $ (x + x ^ 2 + \ cdots + x ^ 6) (x + x ^ 2 + x ^ 3 + x ^ 4) ^ 3 $. Se desideri che il codice
R
calcoli queste cose, consulta stats.stackexchange.com/a/116913 per un sistema completamente implementato. Come altro esempio, il codice Mathematica èClear[x, d]; d[n_, x_] := Sum[x^i, {i, 1, n}]; d[6, x] d[4, x]^3 // Expand
- Tieni presente che @whuber ‘ Il chiarimento è per 1d6 + 3d4, e questo dovrebbe portarti lì. Per un arbitrario wdn + vdm, (x + x ^ 2 + … + x ^ w) ^ n (x + x ^ 2 + … + x ^ v) ^ m. I termini aggiuntivi sono polinomi costruiti e moltiplicati con il prodotto nello stesso modo.
Risposta
Ancora un altro modo per calcolare rapidamente la distribuzione di probabilità di un tiro di dado sarebbe utilizzare un calcolatore specializzato progettato appositamente per quello scopo.
Torben Mogensen , un CS il professore di DIKU ha un eccellente tiratore di dadi chiamato Troll .
Il rullo di dadi Troll e il calcolatore di probabilità stampano la distribuzione di probabilità (pmf, istogramma e, facoltativamente, cdf o ccdf), media, diffusione e deviazione media per una varietà di complicati meccanismi di lancio dei dadi. Ecco alcuni esempi che mostrano il linguaggio del lancio dei dadi di Troll:
Lancia 3 dadi a 6 facce e sommali: sum 3d6
.
Lancia 4 dadi a 6 facce, mantieni i 3 più alti e sommali: sum largest 3 4d6
.
Tira un dado a 6 facce “esplosivo” (cioè, qualsiasi ogni volta che esce un “6”, aggiungi 6 al tuo totale e tira di nuovo): sum (accumulate y:=d6 while y=6)
.
Troll “s SML codice sorgente è disponibile, se vuoi vedere come viene implementato.
Il professor Morgensen ha anche un Articolo di 29 pagine, “ Meccanismi di lancio dei dadi nei giochi di ruolo ,” in cui discute molti dei meccanismi di lancio dei dadi implementati da Troll e alcuni dei meccanismi matematici alla base.
Un software simile gratuito e open source è Dicelab , che funziona sia su Linux che su Windows.
Risposta
Cè “un modo molto ordinato di calcolare le combinazioni o le probabilità si trova in un foglio di calcolo (come excel) che calcola direttamente le convoluzioni.
Lo farò in termini di probabilità e lo illustrerò per i dadi a sei facce, ma puoi farlo per i dadi con qualsiasi numero di lati (inclusa laggiunta di diversi).
( btw è anche facile in qualcosa come R o matlab che farà convoluzioni)
Inizia con un foglio pulito, in poche colonne e spostati verso il basso di un gruppo di righe dallalto (più di 6) .
-
inserisci il valore 1 in una cella. Quelle sono le probabilità associate a 0 dadi. Metti uno 0 alla sua sinistra; questa è la colonna del valore – continua da lì con 1,2,3 in giù fino a quando ti serve.
-
sposta una colonna a destra e una riga in basso a partire da “1”. inserisci la formula “= somma (” quindi freccia sinistra freccia su (per evidenziare la cella con 1 in essa), premi “:” (per iniziare a inserire un intervallo) e poi freccia su 5 volte, seguita da “) / 6 “e premi Invio, così ti ritroverai con una formula come
=sum(c4:c9)/6
(dove quiC9
è la cella con l1) .Quindi copia la formula e incollala nelle 5 celle sottostanti. Ciascuno dovrebbe contenere 0.16667 (ish).
Non digitare nulla nelle celle vuote di queste formule fare riferimento a!
-
spostati in basso di 1 e a destra di 1 dalla parte superiore della colonna di valori e incolla …
… un totale di altri 11 valori. Queste saranno le probabilità per due dadi.
Non importa se ne incolli un po di troppo, otterrai solo zeri.
-
ripeti il passaggio 3 per la colonna successiva per tre dadi e di nuovo per quattro, cinque, ecc.
Vediamo qui che la probabilità di ottenere $ 12 $ su 4d6 è 0,096451 (se moltiplichi per $ 4 ^ 6 $ sarai in grado di scriverlo come una frazione esatta).
Se sei esperto di Excel, cose come copiare una formula da una cella e incollarla in molte celle in una colonna, puoi generare tutte le tabelle fino a dire 10d6 in circa un minuto (forse più velocemente se lo hai fatto un paio di volte).
Se vuoi che le combinazioni contino invece di probabilità, non dividere per 6.
Se vuoi dadi con un numero diverso di facce, puoi sommare $ k $ (invece di 6) celle e poi dividere per $ k $. Puoi mescolare i dadi su colonne (ad es.fai una colonna per d6 e una per d8 per ottenere la funzione di probabilità per d6 + d8):
Commenti
- Questo è molto utile per qualcuno come me che vuole solo un modo per farlo, senza dover capire! Se ‘ non ti dispiace la volatilità della funzione
OFFSET()
, puoi renderla dinamica utilizzando un intervallo denominato. Ad esempio, ho creato un intervallo chiamatoDiceSize
per contenere il numero di lati e inserire il primo ” 1 ” probabilità in B23. Ho utilizzato un intervallo denominato dinamico chiamato KingSum che si riferisce a=OFFSET('Dice Rolls'!$A$22,-1*DiceSize,,DiceSize,1)
. Potrei quindi utilizzare la formula=SUM(OFFSET(KingSum,ROW(A1),COLUMN(A1)))/DiceSize
nella cella C23, trascinata su una vasta area per fornire una tabella basata su DiceSize.
Risposta
$ \ newcommand {red} {\ color {red}} $ $ \ newcommand {blue} {\ color {blue}} $
Lascia che il primo dado sia rosso e il secondo sia nero. Quindi ci sono 36 possibili risultati:
\ begin {array} {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 \\ & \ blu {^ 2} & \ blue {^ 3} & \ blue {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} \\\ hline \ rosso {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 & \ rosso {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 } & \ blu {^ 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 \\ & \ blu {^ 7} & \ blue {^ 8} & \ blue {^ 9} & \ blue {^ {10}} & \ blue {^ {11}} & \ blue {^ {12} } \\\ hline \ end {array}
Ciascuno di questi 36 risultati ($ \ red {\ text {red}}, \ text {black} $) sono ugualmente probabili.
Quando si sommano i numeri sulle facce (totale in $ \ blue {\ text {blue}} $), molti dei risultati (rosso, nero) finiscono con lo stesso totale: puoi vederlo con la tabella nella tua domanda.
Quindi, ad esempio, ce nè solo uno modo per ottenere un totale di $ 2 $ (es solo levento ($ \ red {1}, 1 $)), ma ci “s due modi per ottenere $ 3 $ (cioè gli eventi elementari ($ \ red {2}, 1 $) e ($ \ red {1}, 2 $)). Quindi un totale di $ 3 $ ha il doppio delle probabilità di arrivare a $ 2 $. Allo stesso modo ci sono tre modi per ottenere $ 4 $, quattro modi per ottenere $ 5 $ e così via .
Ora poiché hai 36 possibili risultati (rosso, nero), anche il numero totale di modi per ottenere tutti i diversi totali è 36, quindi dovresti dividere per 36 alla fine. La tua probabilità totale sarà 1, come dovrebbe essere.
Commenti
- Wow, il tavolo è bellissimo!
- Davvero molto carina
Risposta
Soluzione approssimativa
Ho spiegato la soluzione esatta in precedenza (vedi sotto). Ora offrirò una soluzione approssimativa che potrebbe soddisfare meglio le vostre esigenze.
Sia:
$ X_i $ sia il risultato di un lancio di un dado con $ s $ dove $ i = 1, … n $.
$ S $ è il totale di tutti i $ n $ dadi.
$ \ bar {X} $ è la media campione.
Per definizione, abbiamo:
$ \ bar {X} = \ frac {\ sum_iX_i} {n} $
In altre parole,
$ \ bar {X} = \ frac {S} {n} $
Lidea ora è di visualizzare il processo di osservazione di $ {X_i} $ come il risultato del lancio degli stessi dadi $ n $ volte invece che come risultato del lancio di $ n $ dadi. Quindi, possiamo invocare il teorema del limite centrale (ignorando i tecnicismi associati al passaggio dalla distribuzione discreta a quella continua), abbiamo come $ n \ rightarrow \ infty $:
$ \ bar {X} \ sim N ( \ mu, \ sigma ^ 2 / n) $
dove,
$ \ mu = (s + 1) / 2 $ è la media del lancio di un singolo dado e
$ \ sigma ^ 2 = (s ^ 2-1) / 12 $ è la varianza associata.
Quanto sopra è ovviamente unapprossimazione poiché la distribuzione sottostante $ X_i $ ha discreta supporto.
Ma,
$ S = n \ bar {X} $.
Quindi, abbiamo:
$ S \ sim N (n \ mu, n \ sigma ^ 2) $.
Soluzione esatta
Wikipedia ha una breve spiegazione su come calcolare le probabilità richieste. Elaborerò un po di più il motivo per cui la spiegazione ha senso. Per quanto possibile, ho utilizzato una notazione simile allarticolo di Wikipedia.
Supponi di avere $ n $ dadi ciascuno con $ s $ facce e di voler calcolare la probabilità che un singolo tiro di tutti i $ n $ dice il totale ammonta a $ k $. Lapproccio è il seguente:
Definisci:
$ F_ {s, n} (k) $: probabilità di ottenere un totale di $ k $ su un singolo tiro di $ n $ taglia con $ s $ facce.
Per definizione, abbiamo:
$ F_ {s, 1} (k) = \ frac {1} {s} $
Quanto sopra afferma che se hai un solo dado con $ s $ affronta la probabilità di ottenere un totale $ k $ compreso tra 1 e s è il familiare $ \ frac {1} {s} $.
Considera la situazione in cui lanci due dadi: puoi ottenere una somma di $ k $ come segue: il primo tiro è compreso tra 1 e $ k-1 $ e il risultato corrispondente per il secondo è compreso tra $ k Da -1 $ a $ 1 $. Quindi, abbiamo:
$ F_ {s, 2} (k) = \ sum_ {i = 1} ^ {i = k-1} {F_ {s, 1} (i) F_ { s, 1} (ki)} $
Ora considera un tiro di tre dadi: puoi ottenere una somma di $ k $ se ottieni un risultato da 1 a $ k-2 $ sul primo dado e La somma sui restanti due dadi è compresa tra $ k-1 $ e $ 2 $. Quindi,
$ F_ {s, 3} (k) = \ sum_ {i = 1} ^ {i = k-2} {F_ {s, 1} (i) F_ {s, 2 } (ki)} $
Continuando la logica precedente, otteniamo lequazione di ricorsione:
$ F_ {s, n} (k) = \ sum_ {i = 1} ^ {i = k-n + 1} {F_ {s, 1} (i) F_ {s, n-1} (ki)} $
Vedi il link di Wikipedia per maggiori dettagli.
Commenti
- @Srikant Ottima risposta, ma quella funzione si risolve in qualcosa di aritmetico (es .: non ricorsivo)?
- @C. Ross Purtroppo non credo proprio. Ma sospetto che la ricorsione non dovrebbe essere così difficile fintanto che si ha a che fare con n e s piccoli ragionevolmente piccoli. Potresti semplicemente creare una tabella di ricerca e usarla ripetutamente secondo necessità.
- La pagina di wikipedia che hai collegato ha una semplice formula non ricorsiva che è una singola somma. Una derivazione è nella risposta di ‘.
- Lancora del collegamento wiki è morta, conosci una sostituzione?
Risposta
Questa è in realtà una domanda sorprendentemente complicata. Fortunatamente per te, esiste una soluzione esatta che è molto ben spiegata qui:
http://mathworld.wolfram.com/Dice.html
La probabilità che stai cercando è data dallequazione (10): “La probabilità di ottenere p punti (un lancio di p) su n dadi a s facce”.
Nel tuo caso: p = il punteggio osservato (somma di tutti i dadi), n = il numero di dadi, s = 6 (dadi a 6 facce). Questo ti dà la seguente funzione di massa di probabilità:
$$ P (X_n = p) = \ frac {1} {s ^ n} \ sum_ {k = 0} ^ {\ lfloor (pn) / 6 \ rfloor} (-1) ^ k {n \ choose k} {p-6k-1 \ choose n-1} $$
Commenti
- Benvenuto nel nostro sito, Felix!
Rispondi
Le funzioni caratteristiche possono rendere i calcoli che coinvolgono le somme e le differenze di variabili casuali molto semplici. Mathematica ha molte funzioni per lavorare con distribuzioni statistiche, incluso un builtin per trasformare una distribuzione nella sua funzione caratteristica.
Mi piacerebbe per illustrare questo con due esempi concreti: (1) Supponi di voler determinare i risultati del lancio di una raccolta di dadi con un numero di lati diverso , ad esempio, lancia due dadi a sei facce più uno a otto facce morire (cioè 2d6 + d8 )?Oppure (2) supponi di voler trovare la differenza di due lanci di dadi (ad esempio, d6-d6 )?
Un modo semplice per farlo sarebbe usare le funzioni caratteristiche delle distribuzioni uniformi discrete sottostanti. Se una variabile casuale $ X $ ha una funzione di massa di probabilità $ f $, la sua funzione caratteristica $ \ varphi_X (t) $ è solo il Trasformata di Fourier di $ f $, ovvero $ \ varphi_X (t) = \ mathcal {F} \ {f \} (t) = E [e ^ {it X }] $. Un teorema ci dice:
Se le variabili casuali indipendenti $ X $ e $ Y $ hanno funzioni di massa di probabilità corrispondenti $ f $ e $ g $, allora pmf $ h $ della somma $ X + Y $ di questi camper è la convoluzione del loro pmfs $ h (n) = (f \ ast g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (nm) $.
Possiamo usare la proprietà di convoluzione delle trasformate di Fourier per riformularla più semplicemente in termini di funzioni caratteristiche:
La funzione caratteristica $ \ varphi_ {X + Y} (t) $ della somma delle variabili casuali indipendenti $ X $ e $ Y $ è uguale al prodotto delle loro funzioni caratteristiche $ \ varphi_ {X} (t) \ varphi_ {Y} (t) $.
Questa funzione di Mathematica renderà la funzione caratteristica per un dado s-sided:
MakeCf[s_] := Module[{Cf}, Cf := CharacteristicFunction[DiscreteUniformDistribution[{1, s}], t]; Cf]
Il pmf di una distribuzione può essere recuperato dalla sua funzione caratteristica, perché le trasformate di Fourier sono invertibili. Ecco il codice Mathematica per farlo:
RecoverPmf[Cf_] := Module[{F}, F[y_] := SeriesCoefficient[Cf /. t -> -I*Log[x], {x, 0, y}]; F]
Continuando il nostro esempio, sia F il pmf che risulta da 2d6 + d8.
F := RecoverPmf[MakeCf[6]^2 MakeCf[8]]
Ci sono $ 6 ^ 2 \ cdot 8 = 288 $ risultati. Il dominio di supporto di F è $ S = \ {3, \ ldots, 20 \} $. Tre è il minimo perché “stai tirando tre dadi. E venti è il massimo perché $ 20 = 2 \ cdot 6 + 8 $. Se vuoi vedere limmagine di F, calcola
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}
Se vuoi conoscere il numero di risultati che si sommano a 10, calcola
In:= 6^2 8 F[10] Out= 30
Se le variabili casuali indipendenti $ X $ e $ Y $ hanno funzioni di massa di probabilità corrispondenti $ f $ e $ g $, quindi pmf $ h $ della differenza $ X – Y $ di questi RV è correlazione incrociata dei loro pmfs $ h (n) = (f \ star g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (n + m) $ .
Possiamo usare la proprietà di correlazione incrociata delle trasformate di Fourier per riformularla più semplicemente in termini di funzioni caratteristiche:
La funzione caratteristica $ \ varphi_ {XY} (t) $ della differenza di due variabili casuali indipendenti $ {X, Y} $ è uguale al prodotto della funzione caratteristica $ \ varphi_ {X} (t) $ e $ \ varphi_ {Y} (- t) $ (NB il segno negativo davanti alla variabile t nel secondo cha funzione caratteristica).
Quindi, usando Mathematica per trovare il pmf G di d6-d6:
G := RecoverPmf[MakeCf[6] (MakeCf[6] /. t -> -t)]
Ci sono $ 6 ^ 2 = 36 $ risultati. Il dominio di supporto di G è $ S = \ {- 5, \ ldots, 5 \} $. -5 è il minimo perché $ -5 = 1-6 $. E 5 è il massimo perché $ 6-1 = 5 $. Se vuoi vedere limmagine di G, calcola
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}
Commenti
- Ovviamente per distribuzioni discrete, comprese le distribuzioni di supporto finito (come quelle in questione qui), il cf è solo la funzione generatrice di probabilità valutata in x = exp (it), rendendolo un modo più complicato di codificare la stessa informazione.
- @whuber: Come dici tu, cf, mgf e pgf sono più o meno uguali e facilmente trasformabili luno nellaltro, tuttavia Mathematica ha un cf builtin che funziona con tutte le distribuzioni di probabilità di cui è a conoscenza, mentre ‘ non ha un pgf integrato. Ciò rende il codice Mathematica per lavorare con le somme (e le differenze) di dadi utilizzando cfs particolarmente elegante da costruire, indipendentemente dalla complessità dellespressione dei dadi come spero di aver dimostrato sopra. Inoltre, non ‘ non fa male sapere come cfs, FT, convoluzioni e correlazioni incrociate possono aiutare a risolvere problemi come questo.
- @Elisha: buoni punti , tutti loro. Immagino che quello che mi chiedo di più sia se le tue circa dieci righe di codice Mathematica siano davvero più ” eleganti ” o efficienti del una sola riga che ho proposto prima (o la riga ancora più breve che Srikant ha fornito a Wolfram Alpha). Sospetto che le manipolazioni interne con funzioni caratteristiche siano più ardue delle semplici convoluzioni necessarie per moltiplicare i polinomi. Certamente questi ultimi sono più facili da implementare nella maggior parte degli altri ambienti software, come indica la risposta di Glen_b ‘. Il vantaggio del tuo approccio è la sua maggiore generalità.
Risposta
Ecco un altro modo per calcolare la probabilità distribuzione della somma di due dadi a mano mediante convoluzioni.
Per mantenere lesempio molto semplice, calcoleremo la distribuzione di probabilità della somma di un dado a tre facce (d3) la cui variabile casuale chiameremo X e un dado a due facce (d2 ) la cui variabile casuale chiameremo Y.
Creerai una tabella. Nella riga superiore, scrivi la distribuzione di probabilità di X (risultati del lancio di un d3 equo). In basso nella colonna di sinistra , scrivi la distribuzione di probabilità di Y (risultati del lancio di un d2 equo).
Costruirai il prodotto esterno del prima riga di probabilità con la colonna di sinistra di probabilità. Ad esempio, la cella in basso a destra sarà il prodotto di Pr [X = 3] = 1/3 volte Pr [Y = 2] = 1/2 come mostrato nella figura allegata. Nel nostro esempio semplicistico, tutte le celle sono uguali a 1/6.
Successivamente, sommerai lungo le linee oblique della matrice del prodotto esterno come mostrato nel diagramma allegato. Ciascuna linea obliqua passa per una o più celle che ho colorato nello stesso modo: la riga superiore passa per una cella blu, la riga successiva passa per due celle rosse e così via.
Ciascuna delle somme lungo gli obliqui rappresenta una probabilità nella distribuzione risultante. Ad esempio, la somma dei globuli rossi è uguale alla probabilità che i due dadi si sommino a 3. Queste probabilità sono mostrate in basso a destra del diagramma di accompagnamento.
Questa tecnica può essere utilizzata con due distribuzioni discrete qualsiasi con supporto finito. E puoi applicarlo in modo iterativo. Ad esempio, se vuoi conoscere la distribuzione di tre dadi a sei facce (3d6), puoi prima calcolare 2d6 = d6 + d6; quindi 3d6 = d6 + 2d6.
Esiste un linguaggio di programmazione gratuito (ma con licenza chiusa) chiamato J . È un linguaggio basato su array con le sue radici in APL. Ha operatori incorporati per eseguire prodotti esterni e somme lungo gli obliqui nelle matrici, rendendo la tecnica che ho illustrato abbastanza semplice da implementare.
Nel seguente codice J, definisco due verbi. Per prima cosa il verbo d
costruisce un array che rappresenta il pmf di un dado s-sided. Ad esempio, d 6
è il pmf di un dado a 6 facce. Secondo, il verbo conv
trova il prodotto esterno di due matrici e somma lungo le linee oblique. Quindi conv~ d 6
stampa il pmf di 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
Come puoi vedere, J è criptico, ma conciso .
Risposta
Adoro il nome utente! Ben fatto 🙂
I risultati che dovresti contare sono i lanci di dadi, tutti $ 6 \ x 6 = 36 $ come mostrato nella tua tabella.
Ad esempio, $ \ frac {1} {36} $ delle volte la somma è $ 2 $ e $ \ frac {2} {36} $ delle volte la somma è $ 3 $ e $ \ frac {4} {36} $ delle volte la somma è $ 4 $ e così via.
Commenti
- I ‘ sono davvero confuso da Questo. Ho risposto a una domanda per principianti molto recente di qualcuno chiamato die_hard, che apparentemente non esiste più, quindi ho trovato la mia risposta allegata a questo antico thread!
- La tua risposta alla domanda su stats.stackexchange.com/questions/173434/… è stato unito alle risposte a questo duplicato.
Risposta
Puoi risolvere questo problema con una formula ricorsiva. In questo caso le probabilità dei lanci con $ n $ dadi sono calcolate dai lanci con $ n-1 $ dadi.
$$ a_n (l) = \ sum_ {l-6 \ leq k \ leq l-1 \\ \ text {e} n-1 \ leq k \ leq 6 (n-1)} a_ {n-1} (k) $$
Il primo limite per k in la somma sono i sei numeri precedenti. Ad esempio, se vuoi tirare 13 con 3 dadi, puoi farlo se i tuoi primi due dadi ottengono tra 7 e 12.
Il secondo limite per k nella somma sono i limiti di ciò con cui puoi tirare n-1 dadi
Il risultato:
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
modifica: la risposta precedente era una risposta da unaltra domanda che è stata unita alla domanda da C.Ross
Il codice seguente mostra come i calcoli per quella risposta (alla domanda che richiedeva 5 dadi) sono stati eseguiti in R. Sono simili alle somme eseguite in Excel nella risposta di 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)})
Commenti
- @ user67275 la tua domanda è stata fusa in questa domanda. Ma mi chiedo quale fosse la tua idea dietro la tua formula: ” Ho usato la formula: nessun modo per ottenere 8: 5_H_2 = 6_C_2 = 15 ” ?
Risposta
Un approccio consiste nel dire che la probabilità $ X_n = k $ è il coefficiente di $ x ^ {k} $ nellespansione della funzione generatrice $$ \ 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 $$
Quindi ad esempio con sei dadi e un obiettivo di $ k = 22 $ , troverai $ P (X_6 = 22) = \ frac {10} {6 ^ 6} $. Quel collegamento (a una domanda su math.stackexchange) fornisce anche altri approcci
Lascia un commento