Hvordan kan man nemt bestemme fordelingen af resultater for flere terninger?
On februar 13, 2021 by adminJeg vil beregne sandsynlighedsfordelingen for det samlede antal terningkombinationer.
Jeg kan huske, at sandsynligheden for, er antallet af kombinationer, der samlede dette antal over det samlede antal kombinationer (forudsat at terningerne har en ensartet fordeling).
Hvad er formlerne for
- Antallet af kombinationer i alt
- Antallet af kombinationer, der giver et bestemt antal
Kommentarer
- Jeg synes, du skal behandle $ (X_1 = 1, X_2 = 2) $ og $ (X_1 = 2, X_2 = 1) $ som forskellige begivenheder.
Svar
Nøjagtige løsninger
Antallet af kombinationer i $ n $ kaster er selvfølgelig $ 6 ^ n $ .
Disse beregninger udføres mest let ved hjælp af den sandsynlighedsgenererende funktion til en die,
$$ p (x) = x + x ^ 2 + x ^ 3 + x ^ 4 + x ^ 5 + x ^ 6 = x \ frac {1-x ^ 6} {1-x}. $$
(Faktisk er dette $ 6 $ gange pgf – jeg tager mig af faktoren $ 6 $ i slutningen.)
Pgf for $ n $ ruller er $ p (x) ^ n $ . Vi kan beregne dette ret direkte – det er ikke en lukket form, men det er nyttigt – ved hjælp af Binomial Theorem:
$$ p (x ) ^ n = x ^ n (1 – x ^ 6) ^ n (1 – x) ^ {- n} $$
$ $ = x ^ n \ venstre (\ sum_ {k = 0} ^ {n} {n \ vælg k} (-1) ^ kx ^ {6k} \ højre) \ venstre (\ sum_ {j = 0} ^ { \ infty} {-n \ vælg j} (-1) ^ jx ^ j \ højre). $$
Antallet af måder at opnå en sum svarende til $ m $ på terningerne er koefficienten for $ x ^ m $ i dette produkt, som vi kan isolere som
$$ \ sum_ {6k + j = m – n} {n \ vælg k} {- n \ vælg j} (- 1) ^ {k + j} . $$
Summen er over alle ikke-negative $ k $ og $ j $ for hvilken $ 6k + j = m – n $ ; det er derfor endeligt og har kun ca. $ (m-n) / 6 $ vilkår. F.eks. Er antallet af måder til i alt $ m = 14 $ i $ n = 3 $ kaster en sum af kun to udtryk, fordi $ 11 = 14-3 $ kun kan skrives som $ 6 \ cdot 0 + 11 $ og $ 6 \ cdot 1 + 5 $ :
$$ – {3 \ vælg 0} {-3 \ vælg 11} + {3 \ vælg 1} {- 3 \ vælg 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 . $$
(Du kan også være klog og bemærke, at svaret vil være det samme for $ m = 7 $ af symmetrien 1 < -> 6, 2 < -> 5 og 3 < -> 4 og der er kun en måde at udvide $ 7 på – 3 $ som $ 6 k + j $ ; nemlig med $ k = 0 $ og $ j = 4 $ , hvilket giver
$$ {3 \ vælg 0} {- 3 \ vælg 4} = 15 \ tekst {.} $$
Sandsynligheden er derfor lig $ 15/6 ^ 3 $ = $ 5/36 $ , ca. 14%.
På det tidspunkt, hvor dette bliver smertefuldt, giver Central Limit Theorem gode tilnærmelser (i det mindste til de centrale termer, hvor $ m $ er mellem $ \ frac {7 n} {2} – 3 \ sqrt {n} $ og $ \ frac {7 n} {2} + 3 \ sqrt { n} $ : på en relativ basis bliver de tilnærmelser, det giver for halenværdierne værre og værre, da $ n $ bliver stor).
Jeg ser, at denne formel er givet i Wikipedia-artiklen Srikant-referencer, men der gives ingen begrundelse, og der gives heller ikke eksempler. Hvis perchance denne tilgang ser for abstrakt ud, skal du skyde dit yndlingscomputer-algebra-system op og bede det om at udvide $ n ^ {\ text {th}} $ styrken på $ x + x ^ 2 + \ cdots + x ^ 6 $ : du kan læse hele værdisættet med det samme. F.eks. , en Mathematica one-liner er
With[{n=3}, CoefficientList[Expand[(x + x^2 + x^3 + x^4 + x^5 + x^6)^n], x]]
Kommentarer
- Vil den matematikakode fungere med wolfram alpha?
- Det fungerer. Jeg prøvede din tidligere version, men kunne ikke give mening om output.
- @Srikant: Udvid [Sum [x ^ i, {i, 1,6}] ^ 3] fungerer også i WolframAlpha
- @ A.Wilson Jeg tror, mange af disse referencer give en klar sti til generaliseringen, som i dette eksempel er $ (x + x ^ 2 + \ cdots + x ^ 6) (x + x ^ 2 + x ^ 3 + x ^ 4) ^ 3 $. Hvis du vil have
R
kode til at beregne disse ting, se stats.stackexchange.com/a/116913 for en fuldt implementeret system. Som et andet eksempel er Mathematica -kodenClear[x, d]; d[n_, x_] := Sum[x^i, {i, 1, n}]; d[6, x] d[4, x]^3 // Expand
- Bemærk, at @whuber ‘ s afklaring er for 1d6 + 3d4, og det skulle bringe dig derhen. For en vilkårlig wdn + vdm, (x + x ^ 2 + … + x ^ w) ^ n (x + x ^ 2 + … + x ^ v) ^ m. Yderligere termer er polynomer konstrueret og ganget med produktet på samme måde.
Svar
Endnu en anden måde at hurtigt beregne sandsynlighedsfordelingen af et terningkast ville være at bruge en speciel lommeregner designet netop til dette formål.
Torben Mogensen , en CS professor ved DIKU har en fremragende terningrulle kaldet Trold .
Troll terningrulle- og sandsynlighedsberegner udskriver sandsynlighedsfordelingen (pmf, histogram og eventuelt cdf eller ccdf), middelværdi, spredning og middelafvigelse for en række komplicerede terningkastmekanismer. Her er et par eksempler, der viser Trolls sprog til terningkast:
Rul 3 6-sidede terninger og summer dem: sum 3d6
.
Rul 4 6-sidede terninger, hold de højeste 3, og summer dem: sum largest 3 4d6
.
Rul en “eksploderende” 6-sidet matrice (dvs. enhver når en “6” kommer op, tilføj 6 til din total og rul igen): sum (accumulate y:=d6 while y=6)
.
Trold “s SML kildekode er tilgængelig, hvis du vil se, hvordan den implementeres.
Professor Morgensen har også en 29-siders papir, “ Terningkastmekanismer i RPGer , hvor han diskuterer mange af terningkastmekanismerne implementeret af Troll og nogle af matematikken bag dem.
Et lignende stykke gratis open source-software er Dicelab , som fungerer på både Linux og Windows.
Svar
Der er en meget pæn måde at beregne kombinationerne eller sandsynligheden på ities i et regneark (som excel), der beregner konvolutterne direkte.
Jeg vil gøre det med hensyn til sandsynligheder og illustrere det for seks-sidede terninger, men du kan gøre det for terninger med et vilkårligt antal sider (inklusive tilføjelse af forskellige).
( btw det er også let i noget som R eller matlab, der vil gøre krøller)
Start med et rent ark i et par kolonner og bevæg dig ned ad en række rækker fra toppen (mere end 6) .
-
anbring værdien 1 i en celle. Det er sandsynlighederne forbundet med 0 terninger. Sæt en 0 til venstre; det er værdikolonnen – fortsæt derfra med 1,2,3 ned så langt som du har brug for.
-
flyt en kolonne til højre og ned ad en række fra “1”. indtast formlen “= sum (” derefter venstre pil op-pil (for at fremhæve cellen med 1 i den), tryk “:” (for at begynde at indtaste et interval) og derefter pil op 5 gange efterfulgt af “) / 6 “og tryk på Enter – så du ender med en formel som
=sum(c4:c9)/6
(hvor herC9
er cellen med 1 i den) .Kopier derefter formlen og indsæt den i de 5 celler under den. De skal hver indeholde 0,166667 (ish).
Skriv ikke noget i de tomme celler, disse formler henvis til!
-
flyt ned 1 og til højre 1 fra toppen af den kolonne med værdier og indsæt …
… i alt yderligere 11 værdier. Disse vil være sandsynligheden for to terninger.
Det betyder ikke noget, hvis du indsætter et par for mange, får du bare nuller.
-
gentag trin 3 for den næste kolonne for tre terninger og igen for fire, fem osv. terninger.
Vi ser her, at sandsynligheden for at rulle $ 12 $ på 4d6 er 0,096451 (hvis du ganger med $ 4 ^ 6 $, vil du være i stand til at skrive det som en nøjagtig brøkdel).
Hvis du er dygtig til Excel – ting som at kopiere en formel fra en celle og indsætte i mange celler i en kolonne kan du generere alle tabeller op til sige 10d6 på cirka et minut (muligvis hurtigere, hvis du har gjort det et par gange).
Hvis du vil have kombinationstællinger i stedet for sandsynligheder, del ikke med 6.
Hvis du vil have terninger med forskellige antal ansigter, kan du sammenfatte $ k $ (snarere end 6) celler og derefter dele med $ k $. Du kan blande terninger på tværs af kolonner (f.eks.lav en kolonne for d6 og en for d8 for at få sandsynlighedsfunktionen for d6 + d8):
Kommentarer
- Dette er meget nyttigt for en som mig, der bare vil have en måde at gøre det på uden at skulle forstå! Hvis du ikke ‘ ikke har noget imod volatiliteten i
OFFSET()
-funktionen, kan du gøre denne dynamik ved hjælp af et navngivet område. For eksempel lavede jeg et interval kaldetDiceSize
for at holde antallet af sider og lægge den første ” 1 ” sandsynlighed i B23. Jeg brugte et dynamisk navngivet område kaldet KingSum, der refererer til=OFFSET('Dice Rolls'!$A$22,-1*DiceSize,,DiceSize,1)
. Jeg kunne derefter bruge formlen=SUM(OFFSET(KingSum,ROW(A1),COLUMN(A1)))/DiceSize
i celle C23, trukket over et stort område for at give et bord afhængigt af DiceSize.
Svar
$ \ newcommand {red} {\ color {red}} $ $ \ newcommand {blue} {\ color {blue}} $
Lad den første dør være rød og den anden være sort. Så er der 36 mulige resultater:
\ 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 & \ rød {1}, 5 & \ rød {1}, 6 \\ & \ blå {^ 2} & \ blå {^ 3} & \ blå {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} \\\ hline \ rød {2} & \ rød {2}, 1 & \ rød {2}, 2 & \ rød {2}, 3 & \ rød {2}, 4 & \ rød {2}, 5 & \ rød {2}, 6 \\ & \ blå {^ 3} & \ blå {^ 4}
\ blue {^ 5} & \ blue {^ 6} & \ blue { ^ 7} & \ blue {^ 8} \\\ hline \ red {3} & \ red {3}, 1 & \ rød {3}, 2 & \ rød {3}, 3 & \ rød {3}, 4 & \ rød {3}, 5 & \ rød {3}, 6 \\ & \ blue {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8} & \ blue {^ 9} \\\ hline \ red {4} & \ red {4}, 1 & \ red {4}, 2 & \ rød {4}, 3 & \ rød {4}, 4 & \ rød {4}, 5 & \ rød {4}, 6 \\ & \ blå {^ 5} & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8 } & \ blå {^ 9} & \ blå {^ {10}} \\\ hline \ rød {5} & \ rød {5 }, 1 & \ rød {5}, 2 & \ rød {5}, 3 & \ rød {5}, 4 & \ rød {5}, 5 & \ rød {5}, 6 \\ & \ blue {^ 6} & \ blue {^ 7} & \ blue {^ 8} & \ blue {^ 9} & \ blue {^ {10}} & \ blå {^ {11}} \\\ hline \ rød {6} & \ rød {6}, 1 & \ red {6}, 2 & \ red {6}, 3 & \ red {6}, 4 & \ rød {6}, 5 & \ rød {6}, 6 \\ & \ blå {^ 7} & \ blå {^ 8} & \ blå {^ 9} & \ blue {^ {10}} & \ blue {^ {11}} & \ blue {^ {12} } \\\ hline \ end {array}
Hver af disse 36 ($ \ red {\ text {red}}, \ text {black} $) resultater er lige sandsynlige.
Når du summerer tallene på ansigterne (i alt i $ \ blue {\ text {blå}} $), flere af (røde, sorte) resultater ender med det samme total – du kan se dette med tabellen i dit spørgsmål.
Så for eksempel er der kun en måde at få i alt $ 2 $ (dvs. kun begivenheden ($ \ red {1}, 1 $)), men der er to måder at få $ 3 $ (dvs. de elementære begivenheder ($ \ red {2}, 1 $) og ($ \ red {1}, 2 $)). Så i alt $ 3 $ er dobbelt så sandsynligt, at de kommer op som $ 2 $. Tilsvarende er der tre måder at få $ 4 $ på, fire måder at få $ 5 $ og så videre .
Nu da du har 36 mulige (røde, sorte) resultater, er det samlede antal måder at få alle de forskellige totaler også på 36, så du skal dividere med 36 i slutningen. Din samlede sandsynlighed vil være 1, som den burde være.
Kommentarer
- Wow, tabellen er smuk!
- Meget smuk
Svar
Omtrentlig løsning
Jeg forklarede den nøjagtige løsning tidligere (se nedenfor). Jeg vil nu tilbyde en omtrentlig løsning, der måske passer bedre til dine behov.
Lad:
$ X_i $ være resultatet af et kast med en $ s $ terning, hvor $ i = 1, … n $.
$ S $ være summen af alle $ n $ terninger.
$ \ bar {X} $ være gennemsnittet af eksemplet.
Per definition har vi:
$ \ bar {X} = \ frac {\ sum_iX_i} {n} $
Med andre ord
$ \ bar {X} = \ frac {S} {n} $
Ideen er nu at visualisere processen med at observere $ {X_i} $ som resultatet af at kaste de samme terninger $ n $ gange i stedet for som resultatet af at kaste $ n $ terninger. Således kan vi påberåbe os den centrale grænsesætning (ignorerer tekniske forhold forbundet med at gå fra diskret distribution til kontinuerlig), vi har som $ n \ rightarrow \ infty $:
$ \ bar {X} \ sim N ( \ mu, \ sigma ^ 2 / n) $
hvor,
$ \ mu = (s + 1) / 2 $ er gennemsnittet af kastet af en enkelt terning og
$ \ sigma ^ 2 = (s ^ 2-1) / 12 $ er den tilknyttede varians.
Ovenstående er naturligvis en tilnærmelse, da den underliggende fordeling $ X_i $ har diskret support.
Men
$ S = n \ bar {X} $.
Således har vi:
$ S \ sim N (n \ mu, n \ sigma ^ 2) $.
Præcis løsning
Wikipedia har en kort forklaring på, hvordan man beregner de krævede sandsynligheder. Jeg vil uddybe lidt mere om, hvorfor forklaringen der giver mening. I det omfang det er muligt har jeg brugt en lignende betegnelse som Wikipedia-artiklen.
Antag at du har $ n $ terning hver med $ s $ ansigter, og at du vil beregne sandsynligheden for, at en enkelt rulle af alle $ n $ terninger det samlede antal tilføjer op til $ k $. Tilgangen er som følger:
Definer:
$ F_ {s, n} (k) $: Sandsynligheden for, at du får i alt $ k $ på en enkelt rulle på $ n $ terninger med $ s $ ansigter.
Per definition har vi:
$ F_ {s, 1} (k) = \ frac {1} {s} $
Ovenstående siger, at hvis du bare har en terning med $ s $, er sandsynligheden for at opnå i alt $ k $ mellem 1 og s den velkendte $ \ frac {1} {s} $.
Overvej situationen, når du kaster to terninger: Du kan få et beløb på $ k $ som følger: Den første kast er mellem 1 og $ k-1 $, og den tilsvarende kast for den anden er mellem $ k -1 $ til $ 1 $. Således har vi:
$ F_ {s, 2} (k) = \ sum_ {i = 1} ^ {i = k-1} {F_ {s, 1} (i) F_ { s, 1} (ki)} $
Overvej nu et kast med tre terninger: Du kan få et beløb på $ k $, hvis du kaster en 1 til $ k-2 $ på den første terning og sum på de resterende to terninger er mellem $ k-1 $ og $ 2 $. Således
$ F_ {s, 3} (k) = \ sum_ {i = 1} ^ {i = k-2} {F_ {s, 1} (i) F_ {s, 2 } (ki)} $
Fortsættelse af ovenstående logik får vi rekursionsligningen:
$ F_ {s, n} (k) = \ sum_ {i = 1} ^ {i = k-n + 1} {F_ {s, 1} (i) F_ {s, n-1} (ki)} $
Se Wikipedia-linket for flere detaljer.
Kommentarer
- @Srikant Fremragende svar, men løser denne funktion noget aritmetik (dvs. ikke rekursivt)?
- @C. Ross Desværre tror jeg ikke det. Men jeg formoder, at rekursionen ikke skal være så hård, så længe der er tale om rimelig små n og små s. Du kan bare opbygge en opslagstabel og bruge den gentagne gange efter behov.
- Wikipedia-siden, du linkede, har en simpel ikke-rekursiv formel, som er en enkelt sum. En afledning er i whuber ‘ s svar.
- Wiki-linkankeret er dødt, kender du til en erstatning?
Svar
Dette er faktisk et overraskende kompliceret spørgsmål. Heldigvis for dig findes der en nøjagtig løsning, der er meget godt forklaret her:
http://mathworld.wolfram.com/Dice.html
Den sandsynlighed, du leder efter, er givet ved ligning (10): “Sandsynligheden for at opnå p-punkter (en rulle p) på n-sidede terninger”.
I dit tilfælde: p = den observerede score (sum af alle terninger), n = antallet af terninger, s = 6 (6-sidet terning). Dette giver dig følgende sandsynlighedsmassefunktion:
$$ P (X_n = p) = \ frac {1} {s ^ n} \ sum_ {k = 0} ^ {\ lfloor (pn) / 6 \ rfloor} (-1) ^ k {n \ vælg k} {p-6k-1 \ vælg n-1} $$
Kommentarer
- Velkommen til vores side, Felix!
Svar
Karakteristiske funktioner kan gøre beregninger, der involverer summerne og forskellene i tilfældige variabler virkelig lette. Mathematica har mange funktioner til at arbejde med statistiske fordelinger, herunder en indbygget funktion til at omdanne en distribution til dens karakteristiske funktion.
Jeg vil gerne for at illustrere dette med to konkrete eksempler: (1) Antag at du ønskede at bestemme resultaterne af at kaste en terningssamling med forskellige antal sider, f.eks. kaste to seks-sidede terninger plus en otte-sidet dø (dvs. 2d6 + d8 )?Eller (2) antag, at du ville finde forskellen på to terningkast (fx d6-d6 )?
En nem måde at gøre dette på ville være at bruge de karakteristiske funktioner af de underliggende diskrete ensartede fordelinger. Hvis en tilfældig variabel $ X $ har en sandsynlighedsmassefunktion $ f $, så er dens karakteristiske funktion $ \ varphi_X (t) $ bare den diskrete Fourier Transform af $ f $, dvs. $ \ varphi_X (t) = \ mathcal {F} \ {f \} (t) = E [e ^ {it X }] $. En sætning fortæller os:
Hvis de uafhængige tilfældige variabler $ X $ og $ Y $ har tilsvarende sandsynlighedsmassefunktioner $ f $ og $ g $, så er pmf $ h $ af summen $ X + Y $ af disse autocampere er sammenfald af deres pmfs $ h (n) = (f \ ast g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (nm) $.
Vi kan bruge foldningsegenskaben i Fourier Transforms til at omformulere dette mere enkelt med hensyn til karakteristiske funktioner:
Den karakteristiske funktion $ \ varphi_ {X + Y} (t) $ af summen af uafhængige tilfældige variabler $ X $ og $ Y $ er lig med produktet af deres karakteristiske funktioner $ \ varphi_ {X} (t) \ varphi_ {Y} (t) $.
Denne Mathematica-funktion gør den karakteristiske funktion for en sidet die:
MakeCf[s_] := Module[{Cf}, Cf := CharacteristicFunction[DiscreteUniformDistribution[{1, s}], t]; Cf]
PMF for en distribution kan gendannes fra dens karakteristiske funktion, fordi Fourier Transforms er inverterbare. Her er Mathematica-koden for at gøre det:
RecoverPmf[Cf_] := Module[{F}, F[y_] := SeriesCoefficient[Cf /. t -> -I*Log[x], {x, 0, y}]; F]
Fortsæt vores eksempel, lad F være den pmf, der resulterer fra 2d6 + d8.
F := RecoverPmf[MakeCf[6]^2 MakeCf[8]]
Der er $ 6 ^ 2 \ cdot 8 = 288 $ resultater. Støttedomænet for F er $ S = \ {3, \ ldots, 20 \} $. Tre er min, fordi du kaster tre terninger. Og tyve er det maksimale, fordi $ 20 = 2 \ cdot 6 + 8 $. Hvis du vil se billedet af F, skal du beregne
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}
Hvis du vil vide antallet af resultater, der summerer til 10, skal du beregne
In:= 6^2 8 F[10] Out= 30
Hvis de uafhængige tilfældige variabler $ X $ og $ Y $ har tilsvarende sandsynlighedsmassefunktioner $ f $ og $ g $, så er pmf $ h $ af forskellen $ X – Y $ for disse RVer krydskorrelation af deres pmfs $ h (n) = (f \ stjerne g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (n + m) $ .
Vi kan bruge krydskorrelationsegenskaben for Fourier Transforms til at omformulere dette mere simpelt med hensyn til karakteristiske funktioner:
Den karakteristiske funktion $ \ varphi_ {XY} (t) $ af forskellen på to uafhængige tilfældige variabler $ {X, Y} $ er lig med produktet af den karakteristiske funktion $ \ varphi_ {X} (t) $ og $ \ varphi_ {Y} (- t) $ (NB det negative tegn foran variablen t i andet cha karakteristisk funktion).
Så ved hjælp af Mathematica til at finde pmf G af d6-d6:
G := RecoverPmf[MakeCf[6] (MakeCf[6] /. t -> -t)]
Der er $ 6 ^ 2 = 36 $ resultater. Støttedomænet for G er $ S = \ {- 5, \ ldots, 5 \} $. -5 er min, fordi $ -5 = 1-6 $. Og 5 er det maksimale, fordi $ 6-1 = 5 $. Hvis du vil se billedet af G, skal du beregne
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}
Kommentarer
- Selvfølgelig for diskrete distributioner, inklusive distributioner af finit support (som dem, der er tale om her), er cf bare den sandsynlighedsgenererende funktion, der evalueres ved x = exp (it), hvilket gør det til en mere kompliceret måde at kode den samme information på.
- @ whuber: Som du siger, er cf, mgf og pgf mere eller mindre de samme og let omdannelige til hinanden, men Mathematica har en cf indbygget, der fungerer med alle de sandsynlighedsfordelinger, den kender til, mens den har ‘ ikke en indbygget pgf. Dette gør Mathematica-koden til at arbejde med terninger (og forskelle) med terning ved hjælp af cfs særlig elegant at konstruere, uanset kompleksiteten af terningekspression, som jeg håber, jeg har demonstreret ovenfor. Plus skader det ikke ‘ at vide, hvordan cfs, FTer, konvolveringer og krydskorrelationer kan hjælpe med at løse problemer som dette.
- @Elisa: Gode point , allesammen. Jeg gætter på, hvad jeg spekulerer mest på, om dine ti eller så linjer i Mathematica-koden virkelig er mere ” elegante ” eller effektive end enkelt linje, jeg foreslog tidligere (eller den endnu kortere linje Srikant fodret til Wolfram Alpha). Jeg formoder, at de interne manipulationer med karakteristiske funktioner er mere vanskelige end de enkle viklinger, der er nødvendige for at formere polynomer. Bestemt sidstnævnte er lettere at implementere i de fleste andre softwaremiljøer, som Glen_b ‘ s svar indikerer. Fordelen ved din tilgang er dens større generalitet.
Svar
Her er en anden måde at beregne sandsynligheden på fordeling af summen af to terninger i hånden ved hjælp af indviklinger.
For at holde eksemplet virkelig simpelt beregner vi sandsynlighedsfordelingen af summen af en tre-sidet matrice (d3), hvis tilfældige variabel vi kalder X og en tosidet matrice (d2 ) hvis tilfældige variabel vi “kalder Y.
Du laver en tabel. På tværs af den øverste række skal du skrive sandsynlighedsfordelingen af X (resultatet af at køre en fair d3). Ned i venstre kolonne , skriv sandsynlighedsfordelingen af Y (udfald af rullende en fair d2).
Du skal konstruere ydre produkt af øverste række af sandsynligheder med venstre kolonne af sandsynligheder. For eksempel vil den nederste højre celle være produktet af Pr [X = 3] = 1/3 gange Pr [Y = 2] = 1/2 som vist i den ledsagende figur. I vores forenklede eksempel svarer alle cellerne til 1/6.
Derefter summerer du langs de skrå linjer i det ydre produktmatrix som vist i det ledsagende diagram. Hver skrå linje passerer gennem en eller flere celler, som jeg har farvet det samme: Den øverste linje passerer gennem en blå celle, den næste linje passerer gennem to røde celler osv.
Hver af summerne langs skråningerne repræsenterer en sandsynlighed for den resulterende fordeling. F.eks. Er summen af de røde celler lig med sandsynligheden for, at de to terninger opsummeres til 3. Disse sandsynligheder vises nede i højre side af det ledsagende diagram.
Denne teknik kan bruges med to forskellige diskrete fordelinger med endelig støtte. Og du kan anvende det iterat. For eksempel, hvis du vil vide fordelingen af tre seks-sidede terninger (3d6), kan du først beregne 2d6 = d6 + d6; derefter 3d6 = d6 + 2d6.
Der er et gratis (men lukket licens) programmeringssprog kaldet J . Det er et array-baseret sprog med sine rødder i APL. Det har indbyggede operatører til at udføre ydre produkter og summer langs skråningerne i matricer, hvilket gør den teknik, jeg illustrerede, ganske enkel at implementere.
I den følgende J-kode definerer jeg to verb. Først konstruerer verbet d
et array, der repræsenterer pmf for en s-sidet die. For eksempel er d 6
pmf for en 6-sidet matrice. For det andet finder verbet conv
det ydre produkt af to arrays og summer langs de skrå linjer. Så conv~ d 6
udskriver pmf af 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
Som du kan se, er J kryptisk, men kort .
Svar
Elsker brugernavnet! Godt gået 🙂
De resultater, du skal tælle, er terningkastene, alle $ 6 \ gange 6 = 36 $ som vist i din tabel.
For eksempel $ \ frac {1} {36} $ af tiden summen er $ 2 $ og $ \ frac {2} {36} $ af tiden summen er $ 3 $ og $ \ frac {4} {36} $ af tiden summen er $ 4 $ og så videre.
Kommentarer
- Jeg ‘ er virkelig forvirret af det her. Jeg besvarede et meget nybegynderspørgsmål fra en person, der hedder die_hard, som tilsyneladende ikke længere eksisterer, og så fandt mit svar knyttet til denne gamle tråd!
- Dit svar på spørgsmålet på stats.stackexchange.com/questions/173434/… blev fusioneret med svarene på denne duplikat.
Svar
Du kan løse dette med en rekursiv formel. I så fald beregnes sandsynligheden for ruller med $ n $ terning af ruller med $ n-1 $ terninger.
$$ a_n (l) = \ sum_ {l-6 \ leq k \ leq l-1 \\ \ text {and} n-1 \ leq k \ leq 6 (n-1)} a_ {n-1} (k) $$
Den første grænse for k in summeringen er de seks foregående tal. F.eks. Hvis du vil kaste 13 med 3 terninger, kan du gøre dette, hvis dine første to terninger kaster mellem 7 og 12.
Den anden grænse for k i summeringen er grænserne for hvad du kan kaste med terning n-1
Resultatet:
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
rediger: Ovenstående svar var et svar fra et andet spørgsmål , der blev flettet ind i spørgsmålet af C.Ross
Koden nedenfor viser, hvordan beregningerne for det svar (på spørgsmålet om 5 terninger) blev udført i R. De svarer til summationerne udført i Excel i svaret af 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)})
Kommentarer
- @ user67275 dit spørgsmål blev flettet ind i dette spørgsmål. Men jeg spekulerer på, hvad din idé lå bag din formel: ” Jeg brugte formlen: ingen måder at få 8: 5_H_2 = 6_C_2 = 15 ” ?
Svar
En tilgang er at sige, at sandsynligheden $ X_n = k $ er koefficienten $ x ^ {k} $ i udvidelsen af genereringsfunktionen $$ \ 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 $$
Så for eksempel med seks terninger og et mål på $ k = 22 $ finder du $ P (X_6 = 22) = \ frac {10} {6 ^ 6} $. Dette link (til et math.stackexchange-spørgsmål) giver også andre tilgange
Skriv et svar