9. Elődás: Szimulációs módszerek, II. 3. Egyenletes eloszlású véletlen számok generálás Egyenletes eloszlású véletlenszámokt különböző módokon lehet generálni. Mivel szimulációs elemzéseket számítógépen hjtjuk végre, zért érthető, hogy zt szeretnénk, h számítógépben mgábn tudnánk ilyen számokt előállítni. Ezt feldtot számítógépek progrmozási nyelveiben z úgynevezett véletlenszám generátor mtemtiki függvények hjtják végre. A legtöbb véletlenszám generátor kongruenciális összefüggéseket hsznál. Ilyen generátorr péld lineáris kongruenciális generátor, multipliktív generátor és kevert generátor. Ezek közül lineáris kongruenciális generátort lklmzzák leggykrbbn. Ennél módszernél egész számok x,x 2,x 3,... soroztát hozzuk létre és m között következő rekurzív összefüggés lpján: x i+ = (x i +c) modulo m,i =,,2,... Az x kezdeti értéket mgnk nevezzük, konstns szorzó, c növekedés mértéke és m modulus. Ezt négy változót véletlenszám generátor prmétereinek hívjuk. Ezen összefüggés lpján x i+ értéke megegyezik x i +c-nek m-mel vló osztási mrdékávl. Ezután és közötti véletlenszámokt következő egyenlet lpján készítjük el: R i = x i,i =,2,3,... m Nyilvánvló, hogy lineáris kongruencionális generátor lklmzás során előbb vgy utóbb ismétlődés fog fellépni, hiszen z m szerinti mrdékosztályok szám legfeljebb m. Például, h x = 2, = 3,c = és m = 6, kkor z lgoritmus következőképpen
működik: x 3 2 + modulo 6, x = 7, R =,4375 x 2 3 7 + modulo 6, x 2 = 6, R 2 =,375 x 3 3 6 + modulo 6, x 3 = 3, R 3 =,875 x 4 3 3 + modulo 6, x 4 =, R 4 =,625 x 5 3 + modulo 6, x 5 = 5, R 5 =,9375 x 6 3 5 + modulo 6, x 6 = 4, R 6 =,875 x 7 3 4 + modulo 6, x 7 =, R 7 =,6875 x 8 3 + modulo 6, x 8 = 2, R 8 =,25 x 9 3 2 + modulo 6, x 9 = 7, R 9 =,4375.. Ebben példábn tehát generált véletlenszámok periódus 8, nem éri el m értékét sem! Felmerül z kérdés, hogy mely és c mellett érhető el teljes m periódus? Itt nem részletezhető, mély számelméleti meggondolások lpján bizonyíthtó, hogy ehhez következő feltételek teljesülése elégséges: (i) c-nek és m-nek nincs közös osztój; (ii) modulo p z m minden p törzstényezőjére; (iii) modulo 4, h m 4-nek többszöröse. A fenti példánk esetében könnyen ellenőrizhető, hogy csupán hrmdik feltétel nem teljesült, pl. z = 5 válsztássl már ez feltétel is teljesül és így generált véletlen számsorozt: 2,,8,9,4,7,4,5,,3,6,,6,5,2,3,2,,..., zz generált véletlenszám sorozt periódus lehetséges legngyobb, 6. H m = 2 α, hol α áltlábn 3 és 4 közötti érték számítógép számábrázolásánk függvényében, kkor lineáris kongruenciális generátorrl elérhető mximális m periódushossz. Ehhez csk nnk kell teljesülnie, hogy c pártln szám és eggyel ngyobb, mint 4 vlmely többszöröse. 2
Vn zonbn egy további figyelembe veendő tényező is, z úgynevezett Greenberger formul. Eszerint két egymás utáni véletlenszám között (melyek lineáris kongruenciális generátorrl vnnk előállítv) szériális korrelációs együtthtó következő két érték közé esik: ( ) 6c ( c ) ± m m m. Ebből z olvshtó le, hogy = m z z érték, mely mellett szériális korrelációs együtthtó legkisebb, függetlenül c értékétől. A korábbi példánkbn ez z elv részesítette előnyben z = 5 válsztást z = 9 válsztássl szemben, mely válsztás ugyncsk teljes periódusú véletlen számsort állított voln elő. A fenti elvek lklmzásávl IBM PC-re megfelelő lineáris kongruenciális generátor például következő: x i+ = 65533x i modulo 2 3, hol 65533 = 2 6 3. Megjegyezzük, hogy ekkor c = értéket válsztottunk és generátort multipliktív generátornk nevezzük. A multipliktív generátorok egy rossz tuljdonságár G. Mrsgli hívt fel figyelmet. Tekintsük következő multipliktív véletlen szám generátort: x = 73 x i+ = 5x i modulo 28,i =,2,...,N, u i = x i,i =,,2,...,N. 28 Ekkor generált véletlen számokból lkotott (u j+,u j+2 ) T vektorok síkon egyenes vonlk mentén helyezkednek el, mint zt z. ábr muttj. 3
. ábr. A generált véletlen számok egymásutáni párjink elhelyezkedése síkon Több egymásutáni véletlen számból lkotott (u j+,...,u j+n ) T n-dimenziós vektorok j =,n,2n,3n,...-re z előző példához hsonlón z n-dimenziós tér viszonylg kis számú, egymássl párhuzmos hipersíkján helyezkednek el. Például egy 36 bites számítógépen n = dimenzióbn z összes pont legfeljebb 54 hipersíkon tlálhtó. 4. Nem egyenletes eloszlású véletlen számok előállításánk áltlános módszerei 4.. Közvetlen, vgy inverziós módszer 4... Folytonos eset Legyen ξ eloszlásfüggvénye F(x) és tegyük fel, hogy létezik F(x)-nek z inverz függvénye, F (x). Ekkor, h u (,) intervllumon egyenletes eloszlású vlószínűségi változó, kkor F (u) F(x) eloszlásfüggvényű vlószínűségi változó, hiszen P(F (u) < x) = P(u < F(x)) = F(x). Ennek lpján F(x) eloszlásfüggvényű véletlen számok előállításár következő lgoritmus dhtó meg: 4
. lépés: Generáljunk egy, (, ) intervllumon egyenletes eloszlású u véletlen számot. 2. lépés: Adjuk át z x = F (u) számot, mint F(x) eloszlásfüggvényű véletlen számot. Péld. Exponenciális eloszlású véletlen számok generálás. Ekkor hol λ > z eloszlás prmétere. e λx, h x >, F(x) =, különben, Mivel e λx = y e λx = y λx = ln( y) x = λ ln( y) vgyis F (x) = ln( x), zért λ > prméterű exponenciális eloszlású véletlen λ számok generálásár egy lehetséges lgoritmus következő:. Lépés: Generáljunk egy, (, ) intervllumon egyenletes eloszlású u véletlen számot. 2. Lépés: Adjuk át z x = ln( u) számot, mint λ prméterű, exponenciális eloszlású λ véletlen számot. Megjegyzés. Minthogy u ugynúgy (, ) intervllumon egyenletes eloszlású véletlen szám, mint mg z u, zért 2. lépésben egy kivonást meg lehet tkrítni, h z x = lnu számot djuk át, mint λ prméterű exponenciális eloszlású véletlen λ számot. Megjegyzés. A módszer áltlános lklmzhtóságát z csökkenti, hogy z F függvény nem mindig létezik, de h létezik is, nem feltétlen dhtó meg explicit lkbn, mint például normális eloszlás esetében. 4..2. Diszkrét eset A problémát z okozz, hogy diszkrét esetben nem létezik z F(x) eloszlásfüggvény egyértelmű inverz függvénye, hiszen z egy lépcsős függvény, tehát nem szigorún mo- 5
noton növekvő. Mégis megtehetjük, hogy z F(x) = u egyenlet gyökének mindig z x = inf{x u < F(x)} értéket tekintjük. Legyen tehát ξ diszkrét vlószínűségi változó eloszlás következő: P(ξ = x i ) = p i,i =,2,...,n, hol p i,i =,2,...,n és p +p 2 + +p n =. Ekkor F(x) = P(ξ < x) = p i és z inverz függvény helyett hsználhtjuk i:x i <x G(y) = inf{x y < F(x)} függvényt. Így G(u) eloszlás megkívánt diszkrét eloszlást fogj követni. Legyen q = p,q 2 = p +p 2,...,q n = p +p 2 + +p n =. Ezek segítségével G(y) következőképpen írhtó fel: x, h y < q x 2, h q y < q 2 G(y) =. x n, h q n y < q n = Ezzel megfelelő generáló lgoritmus:. Lépés: Generáljunk egy, (, ) intervllumon egyenletes eloszlású u véletlen számot és legyen j =. 2. Lépés: H u < q j, kkor menjünk 4. lépésre. 3. Lépés: Legyen j = j + és menjünk 2. lépésre. 4. Lépés: Adjuk át zx = x j számot, mint olyt, mely megkívánt diszkrét eloszlás szerinti. Péld: Tekintsük z lábbi diszkrét vlószínűségeloszlást: x 3 5 8 2 p 3/ / 2/ 4/ 6
Mivel most q = 3/,q 2 = 4/,q 3 = 6/ és q 4 = / =, zért 3, h y < 3/ 5, h 3/ y < 4/ G(y) = 8, h 4/ y < 6/ 2, h 6/ y < és h z éppen generált, (, )-ben egyenletes eloszlású véletlen szám [, 3/),[3/, 4/),[4/, 6/),[6/, ) intervllumb esik, kkor rendre 3, 5, 8, 2 számokt djuk át, mint megkívánt eloszlású véletlen számokt. Megjegyzés. Ngy n esetén ez véletlen szám generálási módszer nem leghtékonybb, hiszen szükséges összehsonlítások várhtó szám S = n ip i, i= mert x i kiválsztásához i összehsonlítás kell és ez p i vlószínűséggel történik meg. Nyilván hsznos z, h (p i,x i ) párok p i szerint csökkenő sorbn vnnk felsorolv, de kikeresés más módszerekkel is htékonybbá tehető. 4.2. Diszkrét eloszlású véletlen számok generálás táblázt kezeléses módszerrel Ezt módszert egy egyszerű példán muttjuk be. Legyen ξ vlószínűségi változó diszkrét eloszlás z lábbi: P(ξ = ) =,32;P(ξ = b) =,34;P(ξ = c) =,22;P(ξ = d) =,433. Vegyünk egy ezer elemű vektort, melyben 32 helyen z ; 34 helyen b; 22 helyen c és 433 helyen d értéket tároljuk. Generáljunk egy, (, ) intervllumon egyenletes eloszlású u véletlen számot és legyen i = [u+], hol [ ] z egész értéket jelöli. Adjuk át tárolt vektor i-edik elemét, mint ξ-vel zonos diszkrét eloszlású véletlen számot. 7
4.3. Elfogdás elvetés módszere A módszer lpgondolt Neumnn Jánostól szármzik és következő tételben fogllhtó össze. 4.. Tétel: Tekintsük z (, b) intervllumon korlátos, f(x) c sűrűségfüggvényt. Legyen τ és τ 2 két egymástól független, (,)-en egyenletes eloszlású vlószínűségi változó. Trnszformáljuk ezeket ξ = +τ (b ) és η = cτ 2 vlószínűségi változókb. H most ξ vlószínűségi változót ξ = ξ, h η < f(ξ ) feltétel szerint htározzuk meg, kkor ξ vlószínűségi változó sűrűségfüggvénye éppen f(x) lesz. Bizonyítás: Vegyük észre, hogy (ξ,η ) pont egyenletes eloszlású z < x < b, < y < c tégllpon. Ekkor ξ vlószínűségeloszlásánk meghtározásához P(ξ < z) = P(ξ < z η < f(ξ )) = P(ξ < z,η < f(ξ )) P(η < f(ξ )) feltételes vlószínűséget kell kiszámítni. Minthogy (ξ,η ) együttes sűrűségfüggvénye z < x < b, < y < c tégllpon és zon kívül, vlmint nevező nnk c(b ) vlószínűsége, hogy (ξ,η ) pont z y = f(x) görbe lá esik: P(η < f(ξ )) = b f(x) c(b ) dydx = c(b ) b f(x)dx = c(b ). A számlálóbn pedig nnk vlószínűsége, hogy (ξ,η ) pont z y = f(x) görbe lá esik és ugynkkor ξ < z: P(ξ < z,η < f(ξ )) = z f(x) c(b ) dydx = c(b ) z f(x)dx. Végülis tehát P(ξ < z) = z f(x)dx, 8
mit bizonyítni krtunk. A módszer htásfok nyilván nnk vlószínűsége, hogy (ξ,η ) pont z y = f(x) görbe lá esik, ez pedig bizonyításból láthtón c(b ). A 4. tételre lpozv z elfogdás elvetés módszerének legegyszerűbb változt lgoritmikusn következő:. Lépés: Generáljuk z u,u 2 véletlen számokt (,) intervllumon egyenletes eloszlássl, egymástól függetlenül. Legyen v = +(b )u és v 2 = cu 2. 2. Lépés: H v 2 < f(v ), kkor djuk át z x = v számot, mint f(x) sűrűségfüggvényűt (elfogdás). H nem, kkor menjünk z. lépésre (elvetés). Péld: Tekintsük z lábbi sűrűségfüggvénnyel dott folytonos vlószínűségeloszlást: 2x, h x (,) f(x) =, különben. Nyilván c = 2 válsztás célszerű, mely válsztássl véletlen szám generálási lgoritmus z lábbi lkot ölti.. Lépés: Generáljuk u -et és u 2 -t egymástól függetlenül, mint (,) intervllumon egyenletes eloszlású véletlen számokt. 2. Lépés: H u 2 < u, kkor djuk át u -et, mint (,) intervllumon f(x) = 2x sűrűségfüggvényű véletlen számot. Péld: Tekintsük z lábbi sűrűségfüggvénnyel dott folytonos vlószínűségeloszlást: nx n, h x (,) f(x) =, különben. Nyilván c = n válsztás célszerű, mely válsztássl véletlen szám generálási lgoritmus z lábbi lkot ölti. 9
. Lépés: Generáljuk u -et és u 2 -t egymástól függetlenül, mint (,) intervllumon egyenletes eloszlású véletlen számokt. 2. Lépés: H u 2 < u n, kkor djuk át u -et, mint (,) intervllumon f(x) = nx n sűrűségfüggvényű véletlen számot. A módszer htékonyság: nx n dx n = n, h n. Nyilvánvló, hogy htékonyság növelhető lenne záltl, hogy z f(x) görbe ltti területet nem egy tégllpb, hnem egy olyn síkidomb foglljuk be, mely jól idomul z f(x) görbe ltti trtományhoz és melyben továbbr is könnyen tudunk egyenletes eloszlássl pontokt generálni. Ez elérhető például olymódon, hogy válsztunk egy olyn g(x) függvényt, mely lehetőleg jól utánozz z f(x) függvényt és egyben felső korlátot is d rá z érvényességi trtományábn: f(x) g(x),x (,b). Legyen k = b g(x)dx, kkor h(x) = g(x) egy vlószínűségi sűrűségfüggvény. Ügyeljünk jól utánzó g(x) k függvény megválsztáskor rr is, hogy z olyn legyen, hogy h(x) sűrűségfüggvényű vlószínűségi változónk megfelelő véletlen szám könnyen generálhtó legyen. Ekkor befoglló trtományt felülről htároló y = c egyenes helyettesíthető g(x) függvénnyel b (g(x) c esetén k = g(x)dx = c(b ) és ezért h(x) = c(b ) c =, vgyis z b (, b) intervllumon egyenletes eloszlássl kellett generálnunk véletlen számokt, mi egyszerűnek tekinthető. Péld: Tekintsük most is z nx n, h x (,) f(x) =, különben. sűrűségfüggvénnyel dott folytonos vlószínűségeloszlást. Most zonbn g(x) = n válsztás helyett legyen g(x) = nx, mely esetben h(x) = 2x és z ezekkel válsztásokkl felépíthető elfogdás elvetés lpú véletlenszám generálás htékonybb lesz korábbn lklmzottnál.
4.4. Módszerek normális eloszlás esetére 4.4.. Direkt módszer Legyen ξ és η két egymástól független, stndrd normális (N(,))-es vlószínűségi változó. H tekintjük síkon (ξ, η) véletlen pontot, kkor nnk ρ, ϕ polárkoordinátái is egymástól fügetlenek, hiszen polárkoordinátákr áttérve: f(x,y) = x 2 y 2 e 2 e 2 = x 2 +y 2 2π 2π 2π e 2, f(ρ,ϕ) = ρ 2 2π ρe 2 és ezért polárkoordináták peremsűrűségfüggvényei: 2,ρ >, f 2 (ϕ) =, < ϕ < 2π. 2π Ekkor z inverziós módszerrel lehet generálni ρ-t: ρ 2 ρ 2 r r 2 r F (r) = ρe 2 dρ = e 2 = e 2 + hiszen f (ρ) = ρe ρ 2 F (u) = 2ln( u), r 2 e 2 + = u r 2 e 2 = u r2 2 = ln( u) r 2 = 2ln( u) r = 2ln( u). Ezért ρ = 2ln( u ) és ϕ = 2πu 2, hol u és u 2 egymástól független, (,) intervllumon egyenletes eloszlású véletlen számok. Így végül ξ = ρcosϕ = 2lnu cos2πu 2 η = ρsinϕ = 2lnu sin2πu 2
4.4.2. Konvolúciós módszer ( centrális htáreloszlás tétel lklmzás) Legyenek u,u 2,...,u n egymástól független, (,)-en egyenletes eloszlású véletlen számok. Ekkor z összegük elég ngy n esetén közelítőleg normális eloszlású. H stndrd normális eloszlású véletlen számot szeretnénk kpni, kkor előbb stndrdizálni kell z összeget. Mivel [ ] x 2 xdx = = 2 2 [ ] x 3 x 2 dx = = 3 3, zért egy (,)-en egyenletes eloszlású ξ vlószínűségi változór és így E(ξ) = 2 D 2 (ξ) = 3 4 = 2, v = u + +u n n 2 n 2 null várhtó értékű és egy szórású, zz stndrd normális eloszlású véletlen szám. Célszerű n = 2-t válsztni, mert ez már elég ngy centrális htáreloszlás tétel konvergálásához és nem kell nevezőben négyzetgyököt vonni, illetve osztni sem kell, mert nevező értéke így eggyel lesz egyenlő. 2