Chcę obliczyć rozkład prawdopodobieństwa dla sumy kombinacji kości.
Pamiętam, że prawdopodobieństwo jest liczbą kombinacji, które sumują tę liczbę w stosunku do całkowitej liczby kombinacji (zakładając, że kości mają równomierny rozkład).
Jakie są formuły
- Łączna liczba kombinacji
- Liczba kombinacji, które sumują określoną liczbę
probability
dice
Krzyż
źródło
źródło
Odpowiedzi:
Dokładne rozwiązania
Liczba kombinacji wn generuje jest oczywiście 6n .
Obliczeń tych najłatwiej wykonać za pomocą funkcji generowania prawdopodobieństwa dla jednej kości,
(W rzeczywistości jest to6 krotność pgf - na końcu zajmę się współczynnikiem 6 ).
Pgf dlan rolek to p(x)n . Możemy to obliczyć dość bezpośrednio - nie jest to forma zamknięta, ale jest przydatna - używając twierdzenia dwumianowego:
Liczba sposobów uzyskania sumy równejm na kostkach to współczynnik xm tym produkcie, który możemy wyodrębnić jako
Suma jest sumą wszystkich nieujemnych wartościk i j dla których 6k+j=m−n ; dlatego jest skończony i ma tylko około (m−n)/6 terminów. Na przykład, wiele sposobów, aby całkowita m=14 z n=3 rzuty jest sumą ciągu dwóch kategoriach, ponieważ 11=14−3 mogą być zapisane tylko 6⋅0+11 i 6⋅1+5 :
(Możesz także być sprytny i zauważyć, że odpowiedź będzie taka sama dlam=7 przy symetrii 1 <--> 6, 2 <--> 5 i 3 <--> 4 i jest tylko jeden sposób na rozwinięcie 7−3 jako 6k+j ; mianowicie, przy k=0 i j=4 , dając
Prawdopodobieństwo wynosi zatem15/63 = 5/36 , około 14%.
Do czasu, gdy staje się to bolesne, centralne twierdzenie graniczne zapewnia dobre przybliżenie (przynajmniej do warunków centralnych, gdziem jest między 7 n2)−3n−−√ i7n2+3n−−√ : względnie, przybliżenia, jakie daje dla wartości ogona, stają się coraz gorsze, gdyn rośnie.
Widzę, że ta formuła jest podana w artykule Wikipedii Referencje Srikant, ale nie podano żadnego uzasadnienia ani nie podano przykładów. Jeśli to podejście wydaje się zbyt abstrakcyjne, uruchom swój ulubiony system algebry komputerowej i poproś go o rozwinięcienth potęgi x+x2+⋯+x6 : możesz od razu odczytać cały zestaw wartości. Np. Liner Mathematica jest
źródło
R
Clear[x, d]; d[n_, x_] := Sum[x^i, {i, 1, n}]; d[6, x] d[4, x]^3 // Expand
Jeszcze innym sposobem szybkiego obliczenia rozkładu prawdopodobieństwa rzutu kostką byłoby użycie specjalistycznego kalkulatora zaprojektowanego właśnie do tego celu.
Torben Mogensen , profesor CS w DIKU, ma doskonały wałek do kości o nazwie Troll .
Wałek do kości Troll i kalkulator prawdopodobieństwa drukuje rozkład prawdopodobieństwa (pmf, histogram i opcjonalnie cdf lub ccdf), średnią, rozrzut i średnie odchylenie dla różnych skomplikowanych mechanizmów rzucania kostką. Oto kilka przykładów, które pokazują język rzutów kostką Trolla:
Rolki 3 6-stronne kośćmi i zsumować je:
sum 3d6
.Rolka 4 6-stronne kości, zachować najwyższą 3 i zsumować je:
sum largest 3 4d6
.Toczyć się „eksploduje” 6-stronne kością (tj, za każdym razem „6” pojawia się, dodać 6 do łącznej and roll ponownie)
sum (accumulate y:=d6 while y=6)
.Kod źródłowy SML Troll jest dostępny, jeśli chcesz zobaczyć, jak został zaimplementowany.
Profesor Morgensen ma także 29-stronicowy artykuł zatytułowany „ Mechanizmy rzucania kostkami w grach RPG ”, w którym omawia wiele mechanizmów rzucania kostkami zaimplementowanych przez Trolla oraz niektóre matematykę za nimi stojącą.
Podobnym darmowym oprogramowaniem typu open source jest Dicelab , który działa zarówno w systemie Linux, jak i Windows.
źródło
Niech pierwsza kostka będzie czerwona, a druga czarna. Następnie jest 36 możliwych wyników:
Każdy z tych 36 ( ) wyników jest jednakowo prawdopodobny.red,black
Gdy zsumujesz liczby na twarzach (suma na ), kilka wyników (czerwony, czarny) kończy się na tej samej sumie - możesz to zobaczyć w tabeli w swoim pytaniu.blue
Na przykład istnieje tylko jeden sposób na uzyskanie łącznie (tj. Tylko zdarzenie ( 1 , 1 )), ale są dwa sposoby na uzyskanie 3 (tj. Zdarzenia elementarne ( 2 , 1 ) i ( 1 , 2 )). Tak więc w sumie 3 jest dwa razy bardziej prawdopodobne niż 2 . Podobnie istnieją trzy sposoby uzyskania 4 , cztery sposoby uzyskania 5 i tak dalej.2 1,1 3 2,1 1,2 3 2 4 5
Ponieważ masz 36 możliwych wyników (czerwony, czarny), łączna liczba sposobów uzyskania wszystkich różnych sum wynosi również 36, więc na końcu powinieneś podzielić przez 36. Twoje całkowite prawdopodobieństwo wyniesie 1, tak jak powinno być.
źródło
Istnieje bardzo zgrabny sposób obliczania kombinacji lub prawdopodobieństw w arkuszu kalkulacyjnym (takim jak Excel), który oblicza bezpośrednio splot.
Zrobię to w kategoriach prawdopodobieństwa i zilustruję to dla kostek sześciościennych, ale możesz to zrobić dla kości z dowolną liczbą stron (w tym dodawanie różnych).
(przy okazji jest to również łatwe w czymś takim jak R lub Matlab, które będą wykonywać sploty)
Zacznij od czystego arkusza, w kilku kolumnach, i przejdź w dół kilka rzędów od góry (ponad 6).
wstaw wartość 1 do komórki. To są prawdopodobieństwa związane z 0 kostkami. umieść 0 po lewej; to kolumna wartości - idź dalej z 1,2,3 w dół tak daleko, jak potrzebujesz.
przesuń jedną kolumnę w prawo i w dół o jeden wiersz od „1”. wprowadź formułę „= suma (”, a następnie strzałkę w lewo strzałkę w górę (aby podświetlić komórkę zawierającą 1), naciśnij „:” (aby rozpocząć wprowadzanie zakresu), a następnie 5 razy strzałkę w górę, a następnie „) / 6 "i naciśnij klawisz Enter - w ten sposób powstaje formuła podobna
=sum(c4:c9)/6
(gdzieC9
jest komórka z 1 w niej).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, do których odnoszą się te formuły!
przesuń w dół 1 i w prawo 1 od góry tej kolumny wartości i wklej ...
... łącznie kolejne 11 wartości. Będą to prawdopodobieństwa dla dwóch kości.
Nie ma znaczenia, jeśli wkleisz kilka za dużo, po prostu dostaniesz 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 na 4d6 wynosi 0,096451 (jeśli pomnożysz przez 4 6 , będziesz mógł zapisać go jako dokładną część).12 46
Jeśli jesteś biegły w programie Excel - takie rzeczy jak kopiowanie formuły z komórki i wklejanie do wielu komórek w kolumnie, możesz wygenerować wszystkie tabele o wartości 10d6 w około minutę (prawdopodobnie szybciej, jeśli zrobiłeś to kilka razy).
Jeśli chcesz, aby kombinacje były liczone zamiast prawdopodobieństw, nie dziel przez 6.
Jeśli chcesz kości o różnych liczbach twarzy, możesz zsumować (zamiast 6) komórek, a następnie podzielić przez k . Możesz mieszać kości między kolumnami (np. Wykonaj kolumnę dla d6 i jedną dla d8, aby uzyskać funkcję prawdopodobieństwa dla d6 + d8):k k
źródło
Przybliżone rozwiązanie
Dokładne wyjaśnienie wyjaśniłem wcześniej (patrz poniżej). Oferuję teraz przybliżone rozwiązanie, które może lepiej odpowiadać Twoim potrzebom.
Pozwolić:
Z definicji mamy:
Innymi słowy,
gdzie,
Ale,
Mamy zatem:
Dokładne rozwiązanie
Wikipedia ma krótkie wyjaśnienie, jak obliczyć wymagane prawdopodobieństwa. Jeszcze trochę wyjaśnię, dlaczego wyjaśnienie tam ma sens. W możliwym zakresie użyłem podobnej notacji do artykułu z Wikipedii.
Definiować:
Z definicji mamy:
Kontynuując powyższą logikę, otrzymujemy równanie rekurencyjne:
Zobacz link do Wikipedii, aby uzyskać więcej informacji.
źródło
Funkcje charakterystyczne mogą sprawić, że obliczenia obejmujące sumy i różnice zmiennych losowych będą naprawdę łatwe. Mathematica ma wiele funkcji do pracy z rozkładami statystycznymi, w tym wbudowaną funkcję przekształcania rozkładu w jego funkcję charakterystyczną.
Chciałbym to zilustrować dwoma konkretnymi przykładami: (1) Załóżmy, że chcesz określić wyniki rzutu zbiorem kości o różnej liczbie boków, np. Rzuć dwiema sześciościennymi kostkami plus jedną ośmiościenną kością (tj. , 2d6 + d8 )? Lub (2) załóżmy, że chciałeś znaleźć różnicę dwóch rzutów kostką (np. D6-d6 )?
Możemy użyć właściwości splotu Transformacji Fouriera, aby przekształcić to prościej pod względem charakterystycznych funkcji:
Ta funkcja Mathematica uczyni funkcję charakterystyczną dla matrycy jednostronnej:
PMf rozkładu można odzyskać z jego charakterystycznej funkcji, ponieważ transformaty Fouriera są odwracalne. Oto kod Mathematica, aby to zrobić:
Kontynuując nasz przykład, niech F będzie pmf, które wynika z 2d6 + d8.
F := RecoverPmf[MakeCf[6]^2 MakeCf[8]]
Jeśli chcesz poznać liczbę wyników, które sumują się do 10, oblicz
Możemy użyć właściwości korelacji krzyżowej Transformacji Fouriera, aby przekształcić to prościej pod względem charakterystycznych funkcji:
Tak więc, używając Mathematica, aby znaleźć pmf G z d6-d6:
G := RecoverPmf[MakeCf[6] (MakeCf[6] /. t -> -t)]
źródło
Oto inny sposób obliczenia rozkładu prawdopodobieństwa sumy dwóch kości ręcznie przy użyciu zwojów.
Aby ten przykład był naprawdę prosty, obliczymy rozkład prawdopodobieństwa sumy kostki trójstronnej (d3), której zmienną losową nazwiemy X, oraz kostki dwustronnej (d2), której zmienną losową zmienimy zadzwoń do Y.
Idziesz do stołu. W górnym rzędzie napisz rozkład prawdopodobieństwa X (wyniki rzutu sprawiedliwego d3). W lewej kolumnie napisz rozkład prawdopodobieństwa Y (wyniki rzutu sprawiedliwego d2).
Jedziesz na budowę zewnętrzną produkt w górnym rzędzie prawdopodobieństw z lewej kolumnie prawdopodobieństw. Na przykład komórka w prawym dolnym rogu 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 zsumujesz wzdłuż ukośnych linii macierzy produktu zewnętrznego, jak pokazano na dołączonym schemacie. Każda linia ukośna przechodzi przez jedną lub więcej komórek, które pokolorowałem tak samo: górna linia przechodzi przez jedną niebieską komórkę, kolejna linia przechodzi przez dwie czerwone komórki i tak dalej.
Każda suma wzdłuż ukośnych reprezentuje prawdopodobieństwo w wynikowym rozkładzie. Na przykład suma czerwonych komórek równa się prawdopodobieństwu zsumowania dwóch kości do 3. Prawdopodobieństwa te pokazano po prawej stronie dołączonego diagramu.
Technikę tę można stosować z dowolnymi dwoma dyskretnymi rozkładami ze skończonym wsparciem. I możesz zastosować iteracyjnie. Na przykład, jeśli chcesz poznać rozkład trzech sześciościennych kości (3d6), możesz najpierw obliczyć 2d6 = d6 + d6; następnie 3d6 = d6 + 2d6.
Jest bezpłatny (ale zamknięty licencji) język programowania o nazwie J . Jest to język oparty na macierzy, którego korzenie sięgają APL. Ma wbudowane operatory do wykonywania zewnętrznych produktów i sum wzdłuż ukośnych w matrycach, dzięki czemu technika, którą zilustrowałem, jest dość łatwa do wdrożenia.
W poniższym kodzie J definiuję dwa czasowniki. Najpierw czasownik
d
konstruuje tablicę reprezentującą pmf jednostronnej kostki. Na przykładd 6
jest pmf 6-stronnej kostki. Po drugie, czasownikconv
znajduje zewnętrzny iloczyn dwóch tablic i sum wzdłuż linii ukośnych. Więcconv~ d 6
wypisuje pmf z 2d6:Jak widać, J jest tajemniczy, ale zwięzły.
źródło
To w rzeczywistości zaskakująco skomplikowane pytanie. Na szczęście dla ciebie istnieje dokładne rozwiązanie, które bardzo dobrze wyjaśniono tutaj:
http://mathworld.wolfram.com/Dice.html
Prawdopodobieństwo, którego szukasz, wynika z równania (10): „Prawdopodobieństwo uzyskania punktów p (rzut p) na kostkach jednostronnych”.
W twoim przypadku: p = obserwowany wynik (suma wszystkich kości), n = liczba kości, s = 6 (kostka 6-stronna). Daje to następującą funkcję masy prawdopodobieństwa:
źródło
Uwielbiam nazwę użytkownika! Dobra robota :)
źródło
Pierwszym limitem k w podsumowaniu jest sześć poprzedzających liczb. Np. Jeśli chcesz rzucić 13 za pomocą 3 kości, możesz to zrobić, jeśli pierwsze dwie kości wyrzucą między 7 a 12.
Drugi limit dla k w podsumowaniu to limity tego, co możesz rzucić kostką n-1
Wynik:
edytuj: Powyższa odpowiedź była odpowiedzią na inne pytanie, które zostało połączone w pytanie przez C.Ross
Poniższy kod pokazuje, w jaki sposób obliczenia dla tej odpowiedzi (na pytanie o 5 kości) zostały wykonane w R. Są one podobne do sumowań wykonanych w Excelu w odpowiedzi przez Glena B.
źródło
Jednym z podejść jest stwierdzenie, że prawdopodobieństwoXn= k jest współczynnikiem xk w rozszerzeniu funkcji generowania
Tak więc na przykład z sześcioma kośćmi i celk = 22 , znajdziesz P.( X6= 22 ) = 1066 . Ten link (do pytania math.stackexchange) daje również inne podejście
źródło