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