Generatory liczb losowych
Transkrypt
Generatory liczb losowych
Generatory liczb losowych Bartłomiej Wróbel, [email protected] WFAIS, TUZ 14 październik 2009 Czym się zajmiemy 1 Czym są liczby losowe 2 Generowanie liczb o rozkładzie równomiernym 3 Metoda odwrócenia dystrybuanty 4 Metoda eliminacji von Neumana 5 Algorytm Boxa-Mullera Czym są liczby losowe Definition Liczba losowa to konkretna, nieprzewidywalna wartość przyjmowana przez zmienną losową. Nie można reprodukować sekwencji takich liczb. Czym są liczby losowe Źródła liczb losowych Dwa główne źródła pochodzenia: • fizyczne – zjawiska fizyczne (moneta, rozpad promieniotwórczy) Czym są liczby losowe Źródła liczb losowych Dwa główne źródła pochodzenia: • fizyczne – zjawiska fizyczne (moneta, rozpad promieniotwórczy) • generatory matematyczne – według ścisłej matematycznej formuły Czym są liczby losowe Ważne rodzaje liczb losowych Dwa ważne rodzaje liczb losowych • liczby losowe, będące liczbami naturalnymi, • liczby losowe, będące liczbami rzeczywistymi należącymi do przedziału [0; 1] Czym są liczby losowe Liczby o rozkładzie równomiernym Definition Niech xi będzie ciągiem liczb z przedziału (0; 1). Ciąg ten nazywamy ciągiem liczb równomiernie rozłożonych na przedziale (0; 1) jeżeli dla każdej pary liczb (a; b) spełniających warunki 0¬a¬b¬1 zachodzi N 1 X η(a, b)(xi ) = b − a N→∞ N i=1 lim gdzie ( η(a, b)(xi ) = 1, 0, gdy a < xi < b gdy xi ¬ a lub xi b Generowanie liczb o rozkładzie równomiernym Ogólnie Ogólnie: xn+1 = f (xn , xn−1 , . . . , xn−k+1 )modM Zależy od k stałych początkowych x0 , . . . , xk−1 i stałych charakteryzujących funkcję f . Zakładamy, że argumentami f są liczby całkowite ze zbioru ZM = 0, 1, . . . , M − 1 a wartości liczbami całkowitymi nieujemnymi. Wszystkie takie generatory są generatorami okresowymi! Generowanie liczb o rozkładzie równomiernym Przykładowe generatory liniowe Przykładowe generatory liniowe o okresie P = M 3 − 1: Xn = (1176Xn−1 + 1476Xn−2 + 1776Xn−3 )modM, M = 232 − 5 Xn = 213 (Xn−1 + Xn−2 + Xn−3 )modM, M = 232 − 5 Xn = (1995Xn−1 + 1998Xn−2 + 2001Xn−3 )modM, M = 235 − 849 Xn = 219 (Xn−1 + Xn−2 + Xn−3 )modM, M = 232 − 1629 Metoda odwrócenia dystrybuanty Definicja Definition Niech U będzie liczbą losową z rozkładu rownomiernego na (0; 1), a F – funkcją ciagłą i ścisle rosnacą oraz F (−∞) = 0 i F (+∞) = 1. Wówczas zmienna losowa: X = F −1 (U) ma rozkład prawdopodobienstwa o dystrybuancie F . Metoda odwrócenia dystrybuanty Przykład Przykład dla rozkładu Cauchy’ego gęstość prawdopodobieństwa: p(x) = 1 1 π 1 + X2 Dla dystrybuanty mamy: u = F (x) = 1 π Z x dt 0 1 arc tg(x) 1 = + 2 1+t 2 π stąd 1 x = tg(π(u − )) 2 Metoda eliminacji von Neumana Definicja Definition Niech X – zmienna losowa o gestości prawdopodobienstwa f (x) na przedziale [a; b], −∞ < a < b < +∞ oraz f (x) ¬ c, ∀x ∈ [a; b], c < +∞. 1 Generujemy punkt (x1 ; y1 ) taki, że: x1 ∈ U(a; b), y1 ∈ U(0; c). 2 Sprawdzamy, czy y1 ¬ f (x1 ) 3 Jeśli tak, to X = x1 4 Jeśli nie, to eliminujemy parę (x1 ; y1 ) i powtarzamy punkt 1. Metoda eliminacji von Neumana Obrazek... Algorytm Boxa-Mullera Definicja Dla rozkładu normalnego µ = 0 i σ = 1 x2 1 p(x) = √ e − 2 , 2π x ∈ (−∞, +∞) jest problem z dystrybuantą, bo jest związana z funkcją błędu erf (y ): 1 x F (x; 0, 1) = 1 + erf ( √ ) 2 2 Nie jesteśmy w stanie tego policzyć. Algorytm Boxa-Mullera Definicja Jeśli X1 i X2 są niezależnymi zmiennymi losowymi o rozkładzie równomiernym na przedziale (0; 1), to zmienne losowe √ Y1 = √−2 log X1 cos (2πX2 ) Y2 = −2 log X1 sin (2πX2 ) mają rozkład normalny U(0; 1) i także są niezależne. Jak poprawić szybkość? Algorytm Boxa-Mullera Poprawienie szybkości Wprowadzamy dwie nowe zmienne losowe: V1 = 2X1 − 1, V2 = 2X2 − 1, V1 ∈ (−1; 1) V2 ∈ (−1; 1) i żądamy, by: R 2 = V12 + V22 < 1 co odpowiada wyborowi punktów znajdujących się wewnątrz koła wpisanego w kwadrat o boku 2. Algorytm Boxa-Mullera Poprawienie szybkości Mając R ∈ U(0; 1), cos (2πX2 ) i sin (2πX2 ) ∈ U(−1; 1) otrzymujemy: √ Y1 = √−2 log X1 (V1 /R) Y2 = −2 log X1 (V2 /R) Ogólnie dla rozkładów o dowolnym µ i σ mamy: √ Y1 = µ + σ √−2 log X1 cos (2πX2 ) Y2 = µ + σ −2 log X1 sin (2πX2 )