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.