Strona 1 z 1

Generacja liczb losowych

: 20 kwie 2009, o 10:52
autor: miodas007
Mam zrobić trzy generatorki. Dwa bezproblemowo zrobiłem: dla rozkładu eksponencjalnego (metodą odwracania dystrybuanty), dla normalnego (przemianą Boxa-Mullera). Natomiast mam problem z dwumianowym. Mam napisane o tym tyle:
Skoro rozkład ten reprezentuje ilość sukcesów w n eksperymentach z prawdopodobieństwem pojedynczego sukcesu p, wystarczy jedynie wygenerować ciąg n liczb losowych ~ 0,1 i wyznaczyć liczbę elementów x spełniających warunek x ≤ p. Liczba ta jest pojedynczym elementem nowej zmiennej losowej Y o rozkładzie dwumianowym.
Ale niestety nie bardzo rozumiem. Próbowałem i nie wychodzi (sprawdzam budując na podstawie liczb histogram).
Możecie mi trochę to rozjaśnić?

Generacja liczb losowych

: 20 kwie 2009, o 17:58
autor: bstq
Ja znalazłem coś takiego ogólnie dla rozkładu dwumianowego.
\(\displaystyle{ X\sim Bin(n,p)}\)
posługujemy się funkcją:
\(\displaystyle{ p_{k}= \sum_{i=0}^{k} {n \choose i} p^{i} \left( 1-p\right)^{n-i}\quad k=0,1,\ldots,n}\)


Algorytm:
0. wygeneruj \(\displaystyle{ u}\) z rozkładu jednostajnego \(\displaystyle{ \mathcal{U}(0,1)}\)
1. Połóż \(\displaystyle{ X=0}\)
2. Jeśli tylko (While) \(\displaystyle{ u>p_{X}}\) wykonaj: \(\displaystyle{ X=X+1}\)
3. zwróć \(\displaystyle{ X}\)


Innym sposobem:
Jeśli mamy rozkład dyskretny \(\displaystyle{ p_{k}=P(X=k)}\) na nośniku \(\displaystyle{ {0,1,2,\ldots}}\), to można generować:

1. Wygeneruj \(\displaystyle{ U_{1},U_{2},\ldots \sim \mathcal{U}(0,1)}\)
2. \(\displaystyle{ X_{n}=\undeset \left(k: U_{n} \le \sum_{i=0}^{k} p_{k}\right)}\)