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 )