MaCDRG-yver – czyli generacja liczb pseudolosowych na bazie zadanej funkcji gęstości prawdopodobieństwa

Inverse Transform Sampling to typowy sposób generowania liczb pseudolosowych z zadanego rozkładu, który opiera się na funkcji odwrotnej $F^{-1}$ do dystrybuanty $F$ tego rozkładu. Procedura jest banalna, wystarczy wylosować $Y\sim U(0,1)$ i zwrócić $F^{-1}(Y)$. Niestety nie zawsze łatwe jest wyznaczenie jawnej postaci dystrybuanty, tym bardziej dotyczy to funkcji do niej odwrotnej. Dla przykładu – powszechny rozkład normalny charakteryzuje się funkcją gęstości w postaci „elementarnej”, natomiast jego dystrybuanta (i funkcja do niej odwrotna) wymagają zastosowania funkcji specjalnych – w tym przypadku funkcji błędu Gaussa.

Kiedyś kolega (pozdrowienia Marcin!) pokazał mi nieskomplikowany sposób generacji liczb losowych z rozkładu opisanego histogramem. Zwyczajnie „kładziemy” (skalując) słupki histogramu na odcinek $(0,1)$, losujemy $X\sim U(0,1)$, weryfikujemy „do którego słupka wpadło X”, zwracamy „właśnie ten słupek”. Genialne w swojej prostocie, i działa. Histogram to dyskretna reprezentacja rozkładu, dlatego postanowiłem metodę uogólnić na klasę rozkładów ciągłych opisanych zadaną funkcją gęstości. Otrzymaną metodę nazwałem „MaCDRG-yver” 🙂

MaCDRG-yver - Monte Carlo Density based Random Generator

Czytaj dalej