Jak wylosować zmienną losową
W zasadzie można to zrobić tak:
| Gen |
| while |
| return |
Problemem jest mała efektywność tego algorytmu. Jedno z możliwych ulepszeń polega na bardziej ,,inteligentnym” lokalizowaniu przedziału
Załóżmy, że mamy rozkład prawdopodobieństwa
| Gen |
| repeat |
| |
| if |
| until |
| return |
Przedstawię teraz piękną metodę opartą na innym pomyśle.
Przypuśćmy, że mamy dwa ciągi liczb:
| Gen |
| Gen |
| if |
| return |
Jest jasne, że
Jeśli mamy zadany rozkład prawdopodobieństwa
Spośród
W tablicy
| for |
| repeat |
| repeat |
| Gen |
| until |
| |
| |
| until |
Pewnym ulepszeniem tej prymitywnej metody jest następujący algorytm.
Tablica
| for |
| repeat |
| Gen |
| if |
| begin |
| |
| |
| end; |
| |
| until |
Tablica
| for |
| for |
| begin |
| Gen |
| if |
| begin |
| Gen |
| |
| end |
| end |
Uzasadnienie poprawności tego algorytmu jest
rekurencyjne. Załóżmy, że przed
W kroku
Z prawdopodobieństwem
Przez permutację losową rozumiemy uporządkowanie
| for |
| for |
| begin |
| Gen |
| |
| end |
Szczególnie często stosowany jest specjalny przypadek metody eliminacji, znany jako algorytm ,,ilorazu zmiennych równomiernych” (Ratio of Uniforms). Zaczniemy od prostego przykładu, który wyjaśni tę nazwę.
Metodą eliminacji z prostokąta
| repeat |
| Gen |
| Gen |
| until |
Na wyjściu
Ogólny algorytm metody ,,ilorazu równomiernych” oparty jest na następującym fakcie.
Załóżmy o funkcji
Niech zbiór
Miara Lebesgue'a (pole) tego zbioru jest skończone,
Jeżeli
,,Pole figury”
Dokonaliśmy tu zamiany zmiennych:
Jakobian tego przekształcenia jest równy
W podobny sposób,
na mocy znanego wzoru na gęstość przekształconych zmiennych losowych obliczamy
łączną gęstość
Stąd dostajemy gęstość brzegową
Żeby wylosować
Jeśli funkcje
gdzie
Jeśli
Ogólny algorytm RU jest następujący:
| repeat |
| Gen |
| |
| until |
Niech
Wtedy
Zauważmy, że
| repeat |
| Gen |
| |
| |
| until |
Ciekawe, że można skonstruować dokładne algorytmy eliminacji bez konieczności dokładnego obliczania docelowej gęstości
Jeśli umiemy ewaluować funkcje
| repeat |
| Gen |
| Gen |
| repeat |
| |
| if |
| begin |
| until |
| until FALSE |
Poniższy algorytm jest znany jako metoda szeregów zbieżnych. Zakładamy, że
przy czym reszty tego szeregu umiemy oszacować z góry przez znane funkcje,
Pseudo-kod algorytmu jest taki:
| repeat |
| Gen |
| Gen |
| repeat |
| |
| |
| until |
| until |
| return |
Metoda szeregów naprzemiennych jest dostosowana do sytuacji gdy
gdzie
| repeat |
| Gen |
| Gen |
| repeat |
| |
| |
| if |
| |
| |
| until |
| until FALSE |
Rozkład Kołmogorowa-Smirnowa ma dystrybuantę
i gęstość
Możemy zastosować metodę szeregów naprzemiennych, kładąc
oraz
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
Mechaniki UW, 2009-2010.
Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.