Véletlenszám generátorok és tesztelésük Tossenberger Tamás
Érdekességek Pénzérme feldobó gép: $0,25-os érme 1/6000 valószínűséggel esik az élére 51% eséllyel érkezik a felfelé mutató oldalára Pörgetésnél akár 80% eséllyel a nehezebbik oldalára esik
Érdekességek II Dobókockák pontatlansága: Legjobb szabvány: oldalhoszszok közt legfeljebb 5 μm -es eltérés megengedett Keresés youtube videólinkek közt Keresés π -ben
TRNG PRNG, TRNG, CSRNG Mi lehet TRNG? Radioaktív bomlás, quantum jelenségek Határeset: random.org, hőmérsékleti zaj
PRNG Véletlen ~ egyáltalán nem tudjuk megjósolni a sorozat következő elemét az előzőekből De a PRNG-ok épphogy rekurzívak Új elvárás véletlenre : a konkrét alkalmazásunkban az eredmény szempontjából legyen (közel) egyenértékű egy TRNG-vel Alkalmazások: fizikai szimulációk, MC-módszerek, online játékok/szerencsjátékok, mintavétel
Mi a véletlen? Elméletben: X 1, X 2, X 3,... azonos eloszlású független valószínűségi változók felvett sorozatait szeretnénk szimulálni Probléma: gyakorlati szempontból nem megvalósítható; számsorozatokról szeretnénk eldönteni, hogy azok véletlen sorozatok-e A véletlen U ([ 0 ;1)) -sorozat fogalmát szeretnénk valahogy megfogni, egy intuitíve elvárt tulajdonságát definiálni Ezután ugyanezt megtenni a {0,1,..., b 1} halmazra vonatkozó diszkrét egyenletes eloszlás-sorozatra
A véletlen sorozat esszenciája Adott U =U 1, U 2, U 3,... U ([ 0 ;1 )) -beli számsorozat μ(n,u, v):= { j: 0 j<n, u U j <v} a sorozat első n tagja közül azoknak a száma, melyek az [u ;v) intervallumra esnek Szeretnénk: u<v [0;1]:lim μ(n, u,v) =v u n Szemléletesebb jelöléssel: A sorozat -egyenletes, ha P (u U j <v):=lim μ(n, u, v) n P (u 1 U j <v 1,..., u k U j+ k 1 <v k )=(v 1 u 1 )...(v k u k ) A sorozat -egyenletes, ha k -ra -egyenletes
Ugyanez b alapú számsorozatokra A számítógép által generálható számsorozatokra szeretnénk véletlen fogalmat nyerni; valós számsorozatokat (általánosan) nem tudunk generálni Egy b alapú sorozat -egyenletes, ha P ( X j =x 1,... X j+ k 1 = x k )= 1 b k x 1,..., x k {0,..., b 1} -ra Megjegyzés: -egyenletes sorozat (k 1) -egyenletes -egyenletes, ha k-ra -egyenletes
Ugyanez b alapú számsorozatokra A számítógép által generálható számsorozatokra szeretnénk véletlen fogalmat nyerni; valós számsorozatokat (általánosan) nem tudunk generálni Egy b alapú sorozat -egyenletes, ha P ( X j =x 1,... X j+ k 1 = x k )= 1 b k x 1,..., x k {0,..., b 1} -ra Megjegyzés: -egyenletes sorozat (k 1) -egyenletes -egyenletes, ha k-ra -egyenletes
Mi a helyzet a véges sorozatokkal? Bizonyos értelemben nincs értelme véges sorozatok véletlenségéről beszélni: mindegyik ugyanolyan valószínűségű Viszont egyes alkalmazásokban célszerű kizárni bizonyos nem véletlenszerűnek ítélt sorozatokat Adott X 1,..., X b n alapú sorozat -egyenletes, ha P ( X j = x 1,..., X j+ k 1 = x k ) 1b k 1 n A sorozat véletlen ha -egyenletes k log b N -re Pl. 170 db 11 hosszú nem véletlen bináris sorozat létezik
Négyzetközép-módszer Egy n jegyű számból indulunk ki (tetszőleges számrendszerben) Rekurzió: az aktuális n jegyű számot négyzetre emeljük, és az eredménynek, mint 2n jegyű szám, vesszük a középső n jegye által alkotott n jegyű számot Nem túl gyors; egy ideig véletlenszerűként viselkedik, de utána általában rövid ciklusba áll be: pl. 20 bites számok esetén csak 13 különböző ciklus van, és ezek közül a leghosszabb 142 hosszú
Lineáris kongruencia módszer Z m gyűrűben dolgozunk Adott ( m modulus,) X 0 kezdőérték, a együttható és c növekmény Z m -ből Rekurzió: X n+1 =a X n +c m (maximális) ciklushossz elérhető, ha: (c, m)=1; a 1 -et osztja m minden prímosztója; és ha 4 m, akkor 4 a 1 Célszerű választás: 0.01 m a 0.99 m Nagyon gyors, és egyszerű alkalmazásokra megbízható
1 lépéses rekurziók Megéri-e kombinálni a PRNG-ainkat? Pl. X n+1 =((a X n )mod (m+1)+c)mod m még véletlenszerűbb? Az 1-egyenletességhez nagy ciklusra van szükségünk (ha a az ismétlődéses fázist is fel akarjuk használni) Véletlen választott 1 lépéses rekurzió esetén legalább 1 e a valószínűsége, hogy 1 hosszú ciklusba jutunk, és legfeljebb ismétlésmentes szakasznak n e a várható értéke a
χ 2 -próba Csak diszkrét eloszlások vizsgálatára alkalmas Az elemi eseményeket osszuk be k partícióba, ezekbeli gyakoriságot jelölje Y j, az elméleti valószínűségét pedig az adott partícióba esésnek jelölje p j k (Y V = j n p j ) 2 = 1 k 2 Y j eloszlású λ= 1, j=1 n p j n j=1 2 2 paraméterekkel, így táblázatból kiolvasható, vagy kiszámolható, a kívánt valószínűség p j n Γ α= k 1 Konyhamódszer: ha 3 sorozatból legalább 2 gyanús (5%-nál kevesebb, vagy 95%-nál több), akkor a generátor nem elég véletlenszerű
Kolmogorov-Szmirnov-próba Csak folytonos eloszlásfüggvényű eloszlásokra alkalmazható A tapasztalati és az elméleti eloszlásfüggvény legnagyobb eltéréseit karakterizálja K + n = n max(f n ( x) F (x)), K n = n max(f (x) F n (x)) Táblázatból kiolvasható a keresett valószínűség A kis lokális eltéréseket nem mutatja ki
Egyéb tesztek Sorozatpróba: k -asokba rendezzük a sorozat elemeit, és ezekre χ 2 -próbát végzünk; nagyobb -ra érdemesebb pl. pókerpróbát használni Pókerpróba: számötösökre bontjuk a sorozatot, majd 7 partíciót hozunk létre: mind különböző, egy pár, két pár, drill, full house, póker, öt egyforma; ezekre χ 2 -próbát végzünk Hézagpróba: a hézagok hosszainak eloszlását vizsgáljuk, elméletben ez geometriai eloszlást adna, ezzel összevetjük χ 2 próba segítségével k
Egyéb eloszlások szimulálása Eddig csak egyenletes eloszlást próbáltunk meg szimulálni, de gyakran más nevezetes eloszlások generálására is szükségünk van; szerencsére ezek (általában) visszavezethetőek az egyenletesre Ha X valószínűségi változó F (x) eloszlásfüggvénye ismert, akkor mivel F 1 (U ) eloszlásfüggvénye megegyezik az előbbivel, ezért ezen formula segítségével szimulálhatjuk X eloszlást
Normális eloszlás A normális eloszlásnak nem ismerjük az eloszlásfüggvényét, így az előbbi módszert nem tudjuk alkalmazni Box-Muller algoritmus: Adott U 1, U 2 [0 ;1) -en egyenletes (független) valószínűségi változók (1) Legyen V 1 =2U 1 1, V 2 =2 U 2 1 és S =V 2 2 1 +V 2 (2) Ha S 1 GOTO (1) (3) Legyen X 1 =V 1 2 ln S és X S 2 =V 2ln S 2 S Így X 1, X 2 független, normális eloszlású valószínűségi változók
Tesztkérdés Melyik (végtelen) bináris sorozat 2-egyenletes az alábbiak közül? A) 101010... B) 100100100... C) 001100110011... D) 111000111000111000...