Jak łatwo określić rozkład wyników dla wielu kości?
On 13 lutego, 2021 by adminChcę obliczyć rozkład prawdopodobieństwa dla całej kombinacji kości.
Pamiętam, że prawdopodobieństwo to liczba kombinacji, które łączą tę liczbę w całkowitej liczbie kombinacji (zakładając, że kości mają równomierny rozkład).
Jakie są wzory na
- Łączna liczba kombinacji
- Liczba kombinacji, które dają w sumie określoną liczbę
Komentarze
- Myślę, że należy traktować $ (X_1 = 1, X_2 = 2) $ i $ (X_1 = 2, X_2 = 1) $ jako różne zdarzenia.
Odpowiedź
Dokładne rozwiązania
Liczba kombinacji w $ n $ rzutach to oczywiście 6 ^ n $ .
Te obliczenia najłatwiej wykonuje się przy użyciu funkcji generującej prawdopodobieństwo dla jednej kości,
$$ p (x) = x + x ^ 2 + x ^ 3 + x ^ 4 + x ^ 5 + x ^ 6 = x \ frac {1-x ^ 6} {1-x}. $$
(Właściwie to jest 6 $ razy pgf – ja zajmę się współczynnikiem 6 $ na końcu.)
Pgf dla $ n $ rolek to $ p (x) ^ n $ . Możemy obliczyć to dość bezpośrednio – nie jest to forma zamknięta, ale użyteczna – używając twierdzenia dwumianowego:
$$ p (x ) ^ n = x ^ n (1 – x ^ 6) ^ n (1 – x) ^ {- n} $$
$ $ = x ^ n \ left (\ sum_ {k = 0} ^ {n} {n \ choose k} (-1) ^ kx ^ {6k} \ right) \ left (\ sum_ {j = 0} ^ { \ infty} {-n \ choose j} (-1) ^ jx ^ j \ right). $$
Liczba sposobów uzyskania sumy równej $ m $ na kostce to współczynnik $ x ^ m $ w tym produkcie, który możemy wyodrębnić jako
$$ \ sum_ {6k + j = m – n} {n \ choose k} {- n \ choose j} (- 1) ^ {k + j} . $$
Suma przekracza wszystkie nieujemne $ k $ i $ j $ za które 6k $ + j = m – n $ ; dlatego jest skończony i zawiera tylko około $ (m-n) / 6 $ terminów. Na przykład liczba sposobów sumowania $ m = 14 $ w $ n = 3 $ rzutach to suma tylko dwóch terminów, ponieważ 11 $ = 14-3 $ można zapisać tylko jako $ 6 \ cdot 0 + 11 $ i 6 $ \ cdot 1 + 5 $ :
$$ – {3 \ wybierz 0} {-3 \ choose 11} + {3 \ choose 1} {- 3 \ choose 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 . $$
(Możesz też wykazać się sprytem i zauważyć, że odpowiedź będzie taka sama dla $ m = 7 $ , symetria 1 < -> 6, 2 < -> 5 i 3 < -> 4 i jest tylko jeden sposób na rozwinięcie 7 $ – 3 $ jako 6 000 $ + j $ ; mianowicie z $ k = 0 $ i $ j = 4 $ , dając
$$ {3 \ choose 0} {- 3 \ choose 4} = 15 \ text {.} $$
Prawdopodobieństwo jest zatem równe 15/6 ^ 3 $ = 5/36 $ , około 14%.
Zanim stanie się to bolesne, Centralne Twierdzenie Graniczne zapewnia dobre przybliżenia (przynajmniej do terminów centralnych, gdzie $ m $ znajduje się między $ \ frac {7 n} {2} – 3 \ sqrt {n} $ i $ \ frac {7 n} {2} + 3 \ sqrt { n} $ : w ujęciu względnym przybliżenia, które zapewnia wartości ogona, stają się coraz gorsze, gdy $ n $ rośnie).
Widzę, że ta formuła jest podana w artykule w Wikipedii Srikant, ale nie ma uzasadnienia ani przykładów. Jeśli to podejście wydaje się zbyt abstrakcyjne, uruchom swój ulubiony system algebry komputerowej i poproś go o rozwinięcie $ n ^ {\ text {th}} $ potęgi $ x + x ^ 2 + \ cdots + x ^ 6 $ : możesz od razu odczytać cały zestaw wartości. Np. jedna linijka Mathematica to
With[{n=3}, CoefficientList[Expand[(x + x^2 + x^3 + x^4 + x^5 + x^6)^n], x]]
Komentarze
- Czy ten kod Mathematica będzie działał z wolframem alfa?
- To działa. Wypróbowałem twoją wcześniejszą wersję, ale nie mogłem zrozumieć wyniku.
- @Srikant: Expand [Sum [x ^ i, {i, 1,6}] ^ 3] działa również w WolframAlpha
- @ A. Wilson Wierzę, że wiele z tych odniesień podaj jasną ścieżkę do uogólnienia, którym w tym przykładzie jest $ (x + x ^ 2 + \ cdots + x ^ 6) (x + x ^ 2 + x ^ 3 + x ^ 4) ^ 3 $. Jeśli chcesz, aby kod
R
obliczał te rzeczy, zobacz stats.stackexchange.com/a/116913 , aby uzyskać w pełni wdrożony system. Jako kolejny przykład, kod Mathematica toClear[x, d]; d[n_, x_] := Sum[x^i, {i, 1, n}]; d[6, x] d[4, x]^3 // Expand
- Zwróć uwagę, że @whuber ' Wyjaśnienie dotyczy 1k6 + 3d4 i to powinno cię tam doprowadzić. Dla dowolnego wdn + vdm, (x + x ^ 2 + … + x ^ w) ^ n (x + x ^ 2 + … + x ^ v) ^ m. Dodatkowe terminy to wielomiany konstruowane i mnożone z produktem w ten sam sposób.
Odpowiedź
Jeszcze inny sposób szybko obliczyć rozkład prawdopodobieństwa rzutu kośćmi, gdyby użyć wyspecjalizowanego kalkulatora zaprojektowanego specjalnie do tego celu.
Torben Mogensen , CS profesor w DIKU ma doskonały rzutnik kości zwany Troll .
Rolka kości Troll i kalkulator prawdopodobieństwa wypisuje rozkład prawdopodobieństwa (pmf, histogram i opcjonalnie cdf lub ccdf), średnią, rozrzut i średnie odchylenie dla różnych skomplikowanych mechanizmów rzutu kośćmi. Oto kilka przykładów pokazujących język rzutu kostką Trolla:
Rzuć 3 sześciościennymi kostkami i zsumuj je: sum 3d6
.
Rzuć 4 sześciościennymi kośćmi, zachowaj najwyższą 3 i zsumuj je: sum largest 3 4d6
.
Rzuć „eksplodującą” sześciościenną kostką (tj. dowolną gdy pojawi się „6”, dodaj 6 do sumy i rzuć ponownie): sum (accumulate y:=d6 while y=6)
.
Troll „s SML kod źródłowy jest dostępny, jeśli chcesz zobaczyć, jak został zaimplementowany.
Profesor Morgensen ma również 29-stronicowy artykuł „ Mechanizmy rzucania kostkami w grach RPG ”, w którym omawia wiele mechanizmów rzucania kośćmi zaimplementowanych przez Trolla i niektóre matematyki stojące za nimi.
Podobnym darmowym oprogramowaniem o otwartym kodzie źródłowym jest Dicelab , który działa zarówno w systemie Linux, jak i Windows.
Odpowiedź
Istnieje bardzo zgrabny sposób obliczania kombinacji lub prawdopodobieństwa ities w arkuszu kalkulacyjnym (takim jak Excel), który bezpośrednio oblicza zwoje.
Zrobię to w kategoriach prawdopodobieństwa i zilustruję to na sześciościennych kostkach, ale możesz to zrobić dla kości o dowolnej liczbie stron (włączając dodawanie różnych).
( btw jest to również łatwe w czymś takim jak R lub Matlab, który wykonuje zwoje)
Zacznij od czystego arkusza, w kilku kolumnach i przejdź kilka wierszy w dół od góry (więcej niż 6) .
-
umieść wartość 1 w komórce. To jest prawdopodobieństwo związane z 0 kostkami. Postaw 0 po jego lewej stronie; to jest kolumna wartości – idź dalej w dół z 1,2,3 tak daleko, jak potrzebujesz.
-
przenieś jedną kolumnę w prawo i wiersz w dół od „1”. wprowadź formułę „= suma (”, a następnie strzałka w lewo strzałka w górę (aby podświetlić komórkę zawierającą 1), naciśnij „:” (aby rozpocząć wprowadzanie zakresu), a następnie 5 razy strzałka w górę, a następnie „) / 6 „i naciśnij Enter – uzyskujesz formułę taką jak
=sum(c4:c9)/6
(gdzieC9
to komórka z 1) .Następnie skopiuj formułę i wklej ją do 5 komórek poniżej. Każdy z nich powinien zawierać 0,16667 (ish).
Nie wpisuj niczego w puste komórki te formuły odnosić się do!
-
przesuń w dół o 1 i w prawo o 1 od góry tej kolumny wartości i wklej …
… łącznie kolejnych 11 wartości. Będą to prawdopodobieństwa dla dwóch kości.
Nie ma znaczenia, jeśli wkleisz kilka za dużo, otrzymasz po prostu zera.
-
powtórz krok 3 dla następnej kolumny dla trzech kości i ponownie dla czterech, pięciu itd. kości.
Widzimy tutaj, że prawdopodobieństwo wyrzucenia 12 $ na 4k6 wynosi 0,096451 (jeśli pomnożymy przez 4 ^ 6 $, będzie można zapisać to jako dokładny ułamek).
Jeśli jesteś biegły w obsłudze programu Excel – takie czynności jak kopiowanie formuły z komórki i wklejanie do wielu komórek w kolumnie, możesz wygenerować wszystkie tabele do powiedzmy 10k6 w około minutę (prawdopodobnie szybciej, jeśli zrobiłeś to kilka razy).
Jeśli chcesz, aby kombinacja liczyła się zamiast prawdopodobieństw, nie dziel przez 6.
Jeśli potrzebujesz kości o różnej liczbie ścian, możesz zsumować k $ (zamiast 6) komórek, a następnie podzielić przez k $ k $. Możesz mieszać kości w kolumnach (np.zrób kolumnę dla d6 i jedną dla d8, aby uzyskać funkcję prawdopodobieństwa dla d6 + d8):
Komentarze
- Jest to bardzo przydatne dla kogoś takiego jak ja, który po prostu chce to zrobić, bez konieczności rozumienia! Jeśli nie ' nie przejmujesz się zmiennością funkcji
OFFSET()
, możesz utworzyć tę dynamikę przy użyciu nazwanego zakresu. Na przykład utworzyłem zakres o nazwieDiceSize
, aby pomieścić liczbę boków i umieściłem pierwszy ” 1 ” prawdopodobieństwo w B23. Użyłem dynamicznego nazwanego zakresu o nazwie KingSum, który odnosi się do=OFFSET('Dice Rolls'!$A$22,-1*DiceSize,,DiceSize,1)
. Mogłem wtedy użyć formuły=SUM(OFFSET(KingSum,ROW(A1),COLUMN(A1)))/DiceSize
w komórce C23, przeciągając ją po całym dużym obszarze, aby uzyskać tabelę zależną od DiceSize.
Odpowiedź
$ \ newcommand {red} {\ color {red}} $ $ \ newcommand {blue} {\ color {blue}} $
Niech pierwsza kostka będzie czerwona, a druga czarna. Następnie istnieje 36 możliwych wyników:
\ 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 \\ & \ niebieski {^ 2} & \ blue {^ 3} & \ blue {^ 4} & \ blue {^ 5} & \ blue {^ 6} & \ blue {^ 7} \\\ hline \ czerwony {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 & \ czerwony {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 } & \ niebieski {^ 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 \\ & \ niebieski {^ 7} & \ blue {^ 8} & \ blue {^ 9} & \ blue {^ {10}} & \ blue {^ {11}} & \ blue {^ {12} } \\\ hline \ end {array}
Każdy z te 36 ($ \ red {\ text {red}}, \ text {black} $) wyników jest równie prawdopodobnych.
Kiedy zsumujesz liczby na twarzach (suma w $ \ blue {\ text {niebieski}} $), kilka wyników (czerwony, czarny) kończy się z tą samą sumą – możesz to zobaczyć w tabeli w swoim pytaniu.
Na przykład jest tylko jeden sposób, aby uzyskać łącznie 2 $ (tj tylko zdarzenie ($ \ red {1}, 1 $)), ale są dwa sposoby na zdobycie 3 $ (tj. zdarzenia podstawowe ($ \ red {2}, 1 $) i ($ \ red {1}, 2 $)). Zatem prawdopodobieństwo, że suma 3 $ wyniesie 2 $, jest dwa razy większe niż 2 $. Podobnie są trzy sposoby na zdobycie 4 $, cztery sposoby na 5 $ i tak dalej .
Ponieważ masz 36 możliwych (czerwonych, czarnych) wyników, całkowita liczba sposobów uzyskania wszystkich różnych sum również wynosi 36, więc na końcu powinieneś podzielić przez 36. Twoje całkowite prawdopodobieństwo wyniesie 1, tak jak powinno.
Komentarze
- Wow, stół jest piękny!
- Naprawdę bardzo ładne
Odpowiedź
Przybliżone rozwiązanie
Dokładne rozwiązanie wyjaśniłem wcześniej (patrz poniżej). Przedstawię teraz przybliżone rozwiązanie, które może lepiej odpowiadać Twoim potrzebom.
Niech:
$ X_i $ będzie wynikiem rzutu kostką $ s $, gdzie $ i = 1, … n $.
$ S $ to suma wszystkich $ n $ kostek.
$ \ bar {X} $ to średnia próbki.
Z definicji mamy:
$ \ bar {X} = \ frac {\ sum_iX_i} {n} $
Innymi słowy,
$ \ bar {X} = \ frac {S} {n} $
Teraz chodzi o wizualizację procesu obserwacji $ {X_i} $ jako wyniku rzutu tymi samymi kośćmi $ n $ razy zamiast wyrzucenia $ n $ kośćmi. W ten sposób możemy odwołać się do centralnego twierdzenia granicznego (ignorując szczegóły techniczne związane z przejściem od dystrybucji dyskretnej do ciągłej), mamy jako $ n \ rightarrow \ infty $:
$ \ bar {X} \ sim N ( \ mu, \ sigma ^ 2 / n) $
gdzie,
$ \ mu = (s + 1) / 2 $ jest średnią z rzutu pojedynczą kostką, a
$ \ sigma ^ 2 = (s ^ 2-1) / 12 $ to powiązana wariancja.
Powyższe jest oczywiście przybliżeniem, ponieważ podstawowy rozkład $ X_i $ ma dyskretną wsparcie.
Ale
$ S = n \ bar {X} $.
Mamy więc:
$ S \ sim N (n \ mu, n \ sigma ^ 2) $.
Dokładne rozwiązanie
Wikipedia zawiera krótkie wyjaśnienie, jak obliczyć wymagane prawdopodobieństwa. Opowiem nieco więcej o tym, dlaczego to wyjaśnienie ma sens. O ile to możliwe, użyłem podobnej notacji do artykułu w Wikipedii.
Załóżmy, że masz $ n $ kości z $ s $ twarzami i chcesz obliczyć prawdopodobieństwo, że pojedynczy rzut ze wszystkich $ n $ k $ suma sumuje się do $ k $. Podejście jest następujące:
Zdefiniuj:
$ F_ {s, n} (k) $: Prawdopodobieństwo, że otrzymasz łącznie k $ k $ na pojedynczej rolce $ n $ kości z $ s $ ścianami.
Z definicji mamy:
$ F_ {s, 1} (k) = \ frac {1} {s} $
Powyższe stwierdza, że jeśli masz tylko jedną kostkę z $ s $, prawdopodobieństwo uzyskania sumy $ k $ od 1 do s to znajomy $ \ frac {1} {s} $.
Rozważmy sytuację, gdy rzucasz dwiema kośćmi: Możesz otrzymać sumę k $ w następujący sposób: Pierwszy rzut wynosi od 1 do $ k-1 $, a odpowiadający mu rzut drugiej wynosi od k $ -1 $ do 1 $. Mamy więc:
$ F_ {s, 2} (k) = \ sum_ {i = 1} ^ {i = k-1} {F_ {s, 1} (i) F_ { s, 1} (ki)} $
Rozważmy teraz rzut trzema kośćmi: Możesz otrzymać sumę $ k $, jeśli wyrzucisz 1 do $ k-2 $ na pierwszej kostce, a suma pozostałych dwóch kości wynosi od k-1 $ do 2 $. Zatem
$ F_ {s, 3} (k) = \ sum_ {i = 1} ^ {i = k-2} {F_ {s, 1} (i) F_ {s, 2 } (ki)} $
Kontynuując powyższą logikę, otrzymujemy równanie rekurencji:
$ F_ {s, n} (k) = \ sum_ {i = 1} ^ {i = k-n + 1} {F_ {s, 1} (i) F_ {s, n-1} (ki)} $
Zobacz link do Wikipedii, aby uzyskać więcej informacji.
Komentarze
- @Srikant Doskonała odpowiedź, ale czy ta funkcja rozwiązuje coś arytmetycznego (tj. nierekurencyjnego)?
- @C. Ross Niestety nie sądzę. Ale podejrzewam, że rekurencja nie powinna być tak trudna, jeśli mamy do czynienia z odpowiednio małymi n i małymi s. Możesz po prostu utworzyć tabelę przeglądową i używać jej wielokrotnie w razie potrzeby.
- Strona wikipedii, do której się podłączyłeś, ma prostą, nierekurencyjną formułę, która jest pojedynczą sumą. Jedno wyprowadzenie znajduje się w odpowiedzi whuber '.
- Kotwica linku wiki jest martwa, czy znasz inną?
Odpowiedź
W rzeczywistości jest to zaskakująco skomplikowane pytanie. Na szczęście istnieje dokładne rozwiązanie, które jest tutaj bardzo dobrze wyjaśnione:
http://mathworld.wolfram.com/Dice.html
Prawdopodobieństwo, którego szukasz, określa równanie (10): „Prawdopodobieństwo uzyskania p punktów (rzutu p) na n-jednostronnych kostkach”.
W twoim przypadku: p = obserwowany wynik (suma wszystkich kości), n = liczba kości, s = 6 (kostki sześciokątne). Daje to następującą funkcję masy prawdopodobieństwa:
$$ 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} $$
Komentarze
- Witaj w naszej witrynie, Felix!
Odpowiedź
Funkcje charakterystyczne mogą bardzo ułatwić obliczenia obejmujące sumy i różnice zmiennych losowych . Mathematica ma wiele funkcji do pracy z rozkładami statystycznymi, w tym wbudowaną funkcję przekształcania rozkładu w jego funkcję charakterystyczną.
Chciałbym aby to zilustrować dwoma konkretnymi przykładami: (1) Załóżmy, że chcesz określić wyniki rzutu kolekcją kości o różnej liczbie boków, np. rzuć dwiema sześciokątnymi i jedną ośmiościenną umrzeć (tj. 2k6 + d8 )?Lub (2) załóżmy, że chcesz znaleźć różnicę między dwoma rzutami kośćmi (np. d6-d6 )?
Łatwym sposobem na to byłoby użycie charakterystycznych funkcji podstawowych dyskretnych jednolitych rozkładów. Jeśli zmienna losowa $ X $ ma funkcję masy prawdopodobieństwa $ f $, to jej charakterystyczną funkcją $ \ varphi_X (t) $ jest po prostu dyskretny Transformacja Fouriera $ f $, tj. $ \ Varphi_X (t) = \ mathcal {F} \ {f \} (t) = E [e ^ {it X }] $. Twierdzenie mówi nam:
Jeśli niezależne zmienne losowe $ X $ i $ Y $ mają odpowiadające sobie funkcje masy prawdopodobieństwa $ f $ i $ g $, to pmf $ h $ sumy $ X + Y $ tych RV to splot ich pmfs $ h (n) = (f \ ast g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (nm) $.
Możemy użyć właściwości splotu transformaty Fouriera, aby przedstawić to prościej w kategoriach charakterystycznych funkcji:
Charakterystyczna funkcja $ \ varphi_ {X + Y} (t) $ sumy niezależnych zmiennych losowych $ X $ i $ Y $ jest równa iloczynowi ich funkcji charakterystycznych $ \ varphi_ {X} (t) \ varphi_ {Y} (t) $.
Ta funkcja Mathematica stworzy charakterystyczną funkcję dla kostki dwustronnej:
MakeCf[s_] := Module[{Cf}, Cf := CharacteristicFunction[DiscreteUniformDistribution[{1, s}], t]; Cf]
Pmf rozkładu można odzyskać z jego funkcji charakterystycznej, ponieważ transformaty Fouriera są odwracalne. Oto kod Mathematica, który to zrobi:
RecoverPmf[Cf_] := Module[{F}, F[y_] := SeriesCoefficient[Cf /. t -> -I*Log[x], {x, 0, y}]; F]
Kontynuując nasz przykład, niech F będzie pmf, które wynika z 2d6 + d8.
F := RecoverPmf[MakeCf[6]^2 MakeCf[8]]
Jest 6 ^ 2 \ cdot 8 = 288 $ wyników. Domena obsługi F to $ S = \ {3, \ ldots, 20 \} $. Trzy to minimum, ponieważ „rzucasz trzema kostkami. A dwadzieścia to maksimum, ponieważ 20 $ = 2 \ cdot 6 + 8 $. Jeśli chcesz zobaczyć obraz F, oblicz
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}
Jeśli chcesz poznać liczbę wyników, które sumują się do 10, oblicz
In:= 6^2 8 F[10] Out= 30
Jeśli niezależne zmienne losowe $ X $ i $ Y $ mają odpowiednie funkcje masowe prawdopodobieństwa $ f $ i $ g $, a następnie pmf $ h $ różnicy $ X – Y $ tych RV to korelacja krzyżowa ich pmfs $ h (n) = (f \ star g) (n) = \ sum_ {m = – \ infty} ^ \ infty f (m) g (n + m) $ .
Możemy użyć właściwości korelacji krzyżowej transformacji Fouriera, aby przedstawić to w prostszy sposób w kategoriach funkcji charakterystycznych:
Funkcja charakterystyczna $ \ varphi_ {XY} (t) $ różnicy dwóch niezależnych zmiennych losowych $ {X, Y} $ równa się iloczynowi funkcji charakterystycznej $ \ varphi_ {X} (t) $ i $ \ varphi_ {Y} (- t) $ (Uwaga: znak minus przed zmienną t w drugim cha funkcja racteristic).
Więc używając Mathematica do znalezienia pmf G z d6-d6:
G := RecoverPmf[MakeCf[6] (MakeCf[6] /. t -> -t)]
Jest 6 $ ^ 2 = 36 $ wyników. Domena obsługi G to $ S = \ {- 5, \ ldots, 5 \} $. -5 to minimum, ponieważ -5 $ = 1-6 $. A 5 to maksimum, ponieważ 6-1 $ = 5 $. Jeśli chcesz zobaczyć obraz G, oblicz
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}
Komentarze
- Oczywiście dla dystrybucje dyskretne, w tym rozkłady podpór skończonych (jak te, o których mowa tutaj), cf jest po prostu funkcją generującą prawdopodobieństwo obliczoną przy x = exp (it), co czyni ją bardziej skomplikowanym sposobem kodowania tej samej informacji.
- @whuber: Jak mówisz, cf, mgf i pgf są mniej więcej takie same i można je łatwo przekształcić w siebie, jednak Mathematica ma wbudowaną funkcję cf, która działa ze wszystkimi znanymi rozkładami prawdopodobieństwa, podczas gdy nie ' nie ma wbudowanego pgf. To sprawia, że kod Mathematica do pracy z sumami (i różnicami) kości przy użyciu cfs jest szczególnie elegancki do konstruowania, niezależnie od złożoności wyrażenia kości, co mam nadzieję pokazałem powyżej. Poza tym ' nie zaszkodzi wiedzieć, w jaki sposób cfs, FT, zwoje i krzyżowe korelacje mogą pomóc w rozwiązaniu takich problemów.
- @Elisha: Zalety , wszyscy. Wydaje mi się, że najbardziej się zastanawiam, czy około dziesięciu wierszy kodu Mathematica jest naprawdę ” eleganckich ” lub wydajniejszych niż pojedyncza linia, którą zaproponowałem wcześniej (lub jeszcze krótsza linia, którą Srikant podał do Wolfram Alpha). Podejrzewam, że wewnętrzne manipulacje charakterystycznymi funkcjami są bardziej uciążliwe niż proste zwoje potrzebne do mnożenia wielomianów. Z pewnością te ostatnie są łatwiejsze do zaimplementowania w większości innych środowisk oprogramowania, jak wskazuje odpowiedź Glen_b '. Zaletą tego podejścia jest większa ogólność.
Odpowiedź
Oto inny sposób obliczenia prawdopodobieństwa ręczne rozdzielanie sumy dwóch kostek za pomocą zwojów.
Aby przykład był naprawdę prosty, „obliczymy rozkład prawdopodobieństwa sumy kostki trójstronnej (d3), której zmienną losową nazwiemy X, i kostki dwustronnej (d2 ), której zmienną losową nazwiemy Y.
Utworzysz tabelę. W górnym wierszu napisz rozkład prawdopodobieństwa X (wyniki rzutowania sprawiedliwego d3). W lewej kolumnie , napisz rozkład prawdopodobieństwa Y (wyniki wyrzucania sprawiedliwego d2).
Masz zamiar skonstruować iloczyn zewnętrzny funkcji górny rząd prawdopodobieństw z lewą kolumną prawdopodobieństw. Na przykład, dolna prawa komórka będzie iloczynem Pr [X = 3] = 1/3 razy Pr [Y = 2] = 1/2, jak pokazano na załączonym rysunku. W naszym uproszczonym przykładzie wszystkie komórki są równe 1/6.
Następnie zsumujemy wzdłuż ukośnych linii macierzy produktu zewnętrznego, jak pokazano na załączonym diagramie. Każda skośna linia przechodzi przez jedna lub więcej komórek, których pokolorowałem tak samo: górna linia przechodzi przez jedną niebieską komórkę, następna linia przechodzi przez dwie czerwone i tak dalej.
Każda z sum wzdłuż ukośnych reprezentuje prawdopodobieństwo w wynikowym rozkładzie. Na przykład suma czerwonych krwinek jest równa prawdopodobieństwu zsumowania dwóch kostek do 3. Te prawdopodobieństwa są pokazane po prawej stronie załączonego diagramu.
Technikę tę można zastosować z dowolnymi dwoma dyskretnymi rozkładami z ograniczonym wsparciem. Możesz go zastosować iteracyjnie. Na przykład, jeśli chcesz poznać rozkład trzech sześciościennych kostek (3d6), możesz najpierw obliczyć 2k6 = d6 + d6; następnie 3d6 = d6 + 2d6.
Istnieje darmowy (ale z zamkniętą licencją) język programowania o nazwie J . Jest to język oparty na tablicach, którego korzenie znajdują się w APL. Ma wbudowane operatory do wykonywania iloczynów zewnętrznych i sum wzdłuż ukośnych w macierzach, dzięki czemu technika, którą zilustrowałem, jest dość prosta do wdrożenia.
W poniższym kodzie J definiuję dwa czasowniki. Najpierw czasownik d
tworzy tablicę reprezentującą pmf kostki dwustronnej. Na przykład d 6
to pmf sześciościennej kostki. Po drugie, czasownik conv
znajduje iloczyn zewnętrzny dwóch tablic i sum wzdłuż ukośnych linii. Więc conv~ d 6
wypisuje pmf 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
Jak widać, J jest zagadkowe, ale lakoniczne .
Odpowiedź
Uwielbiam nazwę użytkownika! Dobra robota 🙂
Wyniki, które powinieneś policzyć, to rzuty kośćmi, wszystkie 6 $ \ razy 6 = 36 $ z nich, jak pokazano w Twojej tabeli.
Na przykład $ \ frac {1} {36} $ czasu, gdy suma wynosi 2 $, i $ \ frac {2} {36} $ czasu, gdy suma wynosi 3 $, a $ \ frac {4} {36} $ czasu suma to 4 $ i tak dalej.
Komentarze
- Ja ' jestem naprawdę zdezorientowany przez to. Odpowiedziałem na bardzo niedawne pytanie od kogoś o imieniu die_hard, który najwyraźniej już nie istnieje, a potem znalazłem odpowiedź dołączoną do tego starożytnego wątku!
- Twoja odpowiedź na pytanie na stats.stackexchange.com/questions/173434/… zostało połączone z odpowiedziami do tego duplikatu.
Odpowiedź
Możesz rozwiązać ten problem za pomocą wzoru rekurencyjnego. W takim przypadku prawdopodobieństwa rzutu kośćmi $ n $ są obliczane na podstawie rzutów kośćmi $ n-1 $.
$$ 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) $$
Pierwsza granica k in sumowanie to sześć poprzedzających liczb. Np. Jeśli chcesz rzucić 13 trzema kośćmi, możesz to zrobić, jeśli pierwsze dwie kości wyrzucą między 7 a 12.
Drugim limitem k w sumowaniu są limity tego, czym możesz rzucić n-1 kości
Wynik:
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
edycja: powyższa odpowiedź była odpowiedzią z innego pytania , które zostało włączone do pytania przez C. Rossa
Poniższy kod pokazuje, jak obliczenia dla tej odpowiedzi (na pytanie z pytaniem o 5 kostek) zostały wykonane w R. Są podobne do podsumowań wykonanych w Excelu w odpowiedzi 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)})
Komentarze
- @ user67275 Twoje pytanie zostało scalone z tym pytaniem. Ale zastanawiam się, jaki był twój pomysł za twoją formułą: ” Użyłem wzoru: nie ma możliwości uzyskania 8: 5_H_2 = 6_C_2 = 15 ” ?
Odpowiedź
Jednym z podejść jest stwierdzenie, że prawdopodobieństwo $ X_n = k $ jest współczynnikiem $ x ^ {k} $ w rozwinięciu funkcji generującej $$ \ 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 $$
Więc na przykład z sześcioma kostkami i celem $ k = 22 $ , znajdziesz $ P (X_6 = 22) = \ frac {10} {6 ^ 6} $. Ten link (do pytania math.stackexchange) daje też inne podejście
Dodaj komentarz