Véletlenszám generátorok 5. előadás
Véletlenszerű változók, valószínűség véletlen, véletlen változók valószínűség fogalma egy adott esemény bekövetkezésének esélye értékét 0 és között adjuk meg az összes lehetséges esemény esélyének összege A véletlen változókhoz eloszlások tartoznak normáls (Gauss) egyenletes hatványfüggvény Mnden (adat)sokaságnak van gyakorság-eloszlása. A véletlen változóról feltesszük, hogy egy bzonyos (jellegű) sokaságból vesz (véletlen) tákat. A valószínűség változó eloszlása.
Normáls eloszlás a természetben gen gyakor pl. fák évgyűrűnek szélessége, az emberek magassága stb. egy deg (jó régen) egyfajta csoda volt, valamféle felsőbb szabályszerűságet láttak benne. a valószínűségszámítás egyk fontos tétele, a központ határeloszlás tétele szernt: ha nagy számú (lényegében tetszőleges eloszlású) véletlen hatást elegendően nagy számban összegzünk, akkor normáls eloszlást kapunk
Fzka véletlenszám generátorok kezdet módszerek: kockadobás, pénzfeldobás, roulette kerék lassú szerencsejátékokban Zener dódák termáls zaja, fényelektromos hatés, alagúthatás hardveres véletlenszámgenerátorok nterneten elérhető generátorok: - smeretlen forrású vdeofájlon végrehajtott műveletek alapján: láva lámpák felvétele (http://lavarand.sg.com), ég felé fordított kamera felvétele - Hotbts: radoaktív bomlás alapján http://www.fourmlab.ch/hotbts/ - andom.org: atmoszférkus rádózaj alapján működő http://www.random.org/ CNN számítógéppel
Valód és pszeudo véletlenszám generátorok véletlen folyamatok modellezése ma = f ( ) = ma f ( ) d = véletlenszám generátor és ma között értékek előre rögzített eloszlásfüggvénnyel rendelkeznek f() normált eloszlás az adott ntervallumon den egyes számot azonos valószínűséggel generálnak [, ma ] f ( ) = [0, ma ] f ( ) = ma tulajdonságok: gyors a generált számok egymástól tökéletesen függetlenek a sorozatnak vagy egy részének nem szabad perodkusan smétlődne az eloszlás nagyszámú próbálkozásra teljesen egyenletes kell legyen ma véletlenszám generátor véletlenszerű folyamat detersztkus számítógéppel hogyan lehet véletlenszámot generáln? SEHOGY!!! véletlenszámokat hamsítunk detersztkus előállítás, a kívánt tulajdonságokat jól megközelítk
Modulo generátorok egész számokat elhelyezn véletlenszerű sorrendben 0 és ma között n = + ( an c) MOD ( ma ) a paraméterek megválasztása pl. a = 3, c = 4, ma = 32, 7, 25, 7, 23, 9, 3,, 7, 25,... peródus 8 a,c re ún. mágkus, jól bevált kombnácókat szoktak használn ANSI C-ben: ma = AND_MAX a legnagyobb nteger érték a kezdőértéket (SEED) változtathatjuk [0, ): [, ma ): {,.., ma -}: = = ( double) rand() (( double) AND _ MAX +.0) ( double) rand() + * + (nt) (( double) AND _ MAX +.0) ( double) rand() (( double) AND _ MAX +.0) ( ) ma ( ma ) = *
GFS (Generalzed Feedback Shft egster) algortmus a kzárólagos vagy (XO) műveleten alapszk a sorozat n. eleme: n p p és q egész számok és p > q az első p számot más véletlenszámgenerátortól kapjuk pl. n = 6; p = 5; q = 3; 3 = ; = 6 n = n q algortmus:. ha k < q, legyen j = k + q, különben j = k p + q 2. legyen k = k j 3. növeljük k-t (k + ) mod p re megjegyzés: kezdetben a k ndeet 0-nak választhatjuk nagyon gyors, rövdebb peródus, pct korrelált számok p q p q T T F T F T F T T F F F 6 = 3 = 00 0 = 0 = 3 javítható a shufflng algortmussal (összekeverés): - tároljunk egy N elemű lstát random számokból (N < T N ) + generáljunk egy r etra számot. legyen k = (nt)(n * r etra ), és használjuk az r k számot t következő 2. legyen r k = r etra 3. generáljunk r k helyett egy új számot
Véletlenszám generátorok tesztelése meghatározzuk, hogy hány véletlenszámot generálunk smétlődés nélkül hsztogramm teszt: ábrázoljuk adott ks ntervallumokba eső véletlenszámok gyakorságát vzuáls teszt: koordnáta rendszerben ábrázoljuk az (n, n+) pontokat egyenletes befeketedés azt jelent, hogy jó a generátor k-ad rendű korrelácók mértéke: c + k k ( k) = = lm + k = + k n ha, +k egymástól független, akkor és így c(k) = 0 n n =
Tetszőleges eloszlású véletlenszámok generálása GEN generátorunk, am egyenletes eloszlást generál a [0, )-en GEN2 létrehozása, am g() eloszlású véletlenszámokat generál [, ma )-on ma g() normált g( ) d = Kell egy transzformácó, amre gazak a következők: GEN = 0 GEN2 = GEN = GEN2 = y GEN = GEN2 = ma annak valószínűsége, hogy annak valószínűsége, hogy 0, között generáljunk dz = g( z) dz, y között generáljunk = 0 y y G = G [ + G( )] ( ) = g( ) d GEN + [ GEN G( )] 2 = G