wtorek, 21 kwietnia 2015

Rozkład dwumianowy a rozkład Poissona

Każdy z nas miał na pewno w szkole rozkład dwumianowy. Ktoś może tego nie pamiętać, ale na pewno zapamiętał próby Bernouliego (z ew. rysowaniem drzewek wyboru). To jest dokładnie to samo.

Rozkład taki powstaje, gdy zadamy sobie następujące pytanie: jakie jest prawdopodobieństwo tego, że zdarzenie o prawdopodobieństwie p wydarzy się dokładnie k razy w ciągu n prób.

Przykładem może być rzut kostką do gry: prawdopodobieństwo wyrzucenia 6 (lub dowolnej innej ścianki) jest równe 1/6. Żeby wyrzucić „generała” musimy wyrzucić 5 jednakowych oczek. Możemy zrównać ze sobą rzut jednocześnie 5 kostkami z 5-krotnym rzutem jedną kostką (z zapamiętywaniem wyników), gdyż i tu i tu rezultaty są od siebie niezależne.

Interesuje nas teraz, jakie jest wyrzucenie owego generała. Innymi słowy mówiąc: jakie jest prawdopodobieństwo zdarzenia o p=1/6 pięć razy pod rząd w ciągu 5 rzutów?

środa, 8 kwietnia 2015

Generator liczb losowych: rozkład Poissona

Niedawno pisałem o rzeczywistym przykładzie rozkładu Poissona. Dzisiaj chciałbym napisać o tym, w jaki sposób generować programowo liczby losowe o takim rozkładzie.

Na matematyce nie znam się zbyt dobrze, a na kombinatoryce i prawdopodobieństwie prawie w ogóle(*) - z tego powodu nie byłem w stanie wymyślić odpowiedniego algorytmu samemu. Postanowiłem więc poszukać odpowiedniego w internecie. Ale szczerze mówiąc nawet gdybym był w stanie coś samemu wymyślić i tak szukałbym gotowego rozwiązania, ponieważ zdolność do szukania gotowych rozwiązań to jedna z cnót programisty (mówię poważnie).

(*) - Ostatnio jednak poczytałem co nieco o tym rozkładzie i to, co zrozumiałem chciałbym przedstawić kiedyś indziej.

Ten artykuł nie będzie więc zbyt twórczy, ale to nawet lepiej . Przedstawię tu tylko gotowe implementacje w Javie kilku funkcji, które znalazłem na stronie Wikipedii.