Véletlenszám generátorok és tesztelésük HORVÁTH BÁLINT Mi a véletlen? Determinisztikus vs. Véletlen esemény? Véletlenszám: számok sorozata, ahol véletlenszerűen követik egymást az elemek Pszeudo-véletlenszám (több def. is) Determinisztikus algoritmussal generált látszólag véletlen, kaotikus számsorozat Determinisztikus algoritmus számára véletlen (Kolmogorov) Egy sorozat pszeudovéletlen, ha a lehető legrövidebb leírása maga a sorozat (Kriptográfiai) Egy sorozat pszeudovéletlen, ha a következő elem polinomiális időben generálható, de jósolni nem lehet polinomiális időben Elnevezéseik RNG = Random Number Generator PRNG = Pseudo Random Number Generator CSPRNG = Cryptographically Secure Pseudo Random Number Generator Elvárások Nagy periódus (ha van, PRNG-knél általában van) Egyenletes eloszlás, (0,1) intervallumon (esetenként zárt intervallumot akarunk) Függetlenül követik egymást a sorozat elemei Ezekből következő egyéb egyenletességi és függetlenségi tulajdonságok (később próbáknál) Miért pont egyenletes eloszlás? Mert átvihető másik eloszlásokba Ha F(x) az eloszlásfüggvény egy Q eloszlásból és X ~ U(0,1) val.vált., akkor F -1 (X) ~Q eloszlásfüggvénye Biz.: P(F -1 (X) < x) = P(X < F(x)) = F(x) Box-Müller módszer U,V független egyenletes eloszlású val.vált.-k. Ekkor T = 2 log(v) sin(2π U) és S = 2 log(v) cos(2π U) független standard normális eloszlásúak lesznek Alkalmazásuk Monte-Carlo integrál Véletlen pontokat dobál a könnyen kiszámítható területen egyenletesen A belül lévő pontok számával becsülhető a területek aránya Fizikai szimulációk 1
Néhány generátor Middle-square (Neumann János-féle) LCG (Linear Congruential Generator) GFSR (Generalized Feedback Shift Register) Mersenne Twister Blum-Blum-Shub Random.org Middle-square Véletlenszerűnek gondoljuk Rövid ciklusokhoz konvergál Legfeljebb 8 n hosszúak Linear Congruential Generator (LCG) x n+1 ax n + c mod M Legnagyobb lehetséges periódus M Tétel: generátor periódusa pontosan akkor M, ha c és M relatív prímek b a 1 osztható M minden prímosztójával M 4-gyel osztható, akkor b is Előnyei Gyors Minimális memória igény Hátrányai Előre jelezhető Monte-Carlo módszerhez nem elég véletlenszerű Ábrák (n 1000) Felső: M 2 8 ; a 213; c 1 Alsó: M 2 32 ; a 22695477; c 1 Borland C/C++ beállítása GFSR (Generalized Feedback Shift Register) x n+k x n+m x n ahol a bitenkénti kizáró-vagy művelet Ha k > m > 0 olyan, hogy x k + x m + 1 primitív polinom Z 2 felett, akkor a periódus eléri a 2 k 1-et Van próba, amelyen megbukik a generátor A kizáró vagy tulajdonságából adódóan, ha sok azonos jegy követi egymást, a következő nagyobb valószínűséggel lesz 0 Mersenne Twister A működési alapelve a GFSR-é, egy csavarással x n+k x n+m x n A Ahol A egy bitkeverő mátrix Gyengeségei kezdőérték választás Sok 0 esetén a sorozatban is inkább 0-k lesznek Kellően sok adatból jósolható (nem CSPRNG) Egyik legjobb generátor 2
Blum-Blum-Shub x n+1 x n 2 mod M Ahol M pq két nagy prím szorzata Kezdőérték relatív prím M-hez Kimenet: x n egyik vagy néhány bitje (általában a paritás) Belátható, hogy ha polinomiális időben jósolható, akkor polinomiális időben lehet prímfaktorizálni CSPRNG valóban Random.org Valódi RNG Atmoszférikus zajból generál számokat De lassú Vizsgálatok Egyszerűbb vizsgálatok Hisztogram, periódusvizsgálat, autókorreláció D.E.Knuth (1981) által javasol χ 2 alapú próbák Illetve a Kolmogorov-Smirnov próba Diehard nevű próbacsomag Egyszerűbb vizsgálatok Hisztogram Pozitívan vagy negatívan kiugró érték Rövid periódus Autókorreláció A sorozat önmaga eltoltjával vett korreláció Jól kimutatja a korábbi elemektől való egyszerű függést Tapasztalati eloszlásfüggvény A χ 2 próba Diszkrét eloszlások vizsgálatára alkalmas d a lehetséges események száma, n minta mérete T vektor megfigyelt események számai, P vektor az elméleti valószínűségeik d (T Legyen V i np i ) 2 i=1 statisztika np i V ekkor d 1 szabadságfokú χ 2 eloszlású, α legyen az a valószínűség, ahol az eloszlás V (kvartilis fv-ből, táblázattal) 3
Préselés próba Gyakoriság próba Knuth próbái Gyakoriság próba Egyenletes csoportokra osztja a [0,1] intervallumot Sorozat próba Egymás utáni elemeket párokba, stb. állítja: ezeken gyakoriság próba Hézag próba Futásokat néz, amelyek benne vannak adott hézagban Póker próba 5-ösökben keres a póker szabályai szerinti nyerő kombinációkat (pár, drill, ) Permutáció próba Adott hosszú részsorozatokban nézi az elemek sorrendjét Van még több is Knuth által meghatározott határok α p-értékre Elvetjük, ha <1% vagy >99% Gyanús, ha <5% vagy >95% Majdnem gyanús, ha <10% vagy >90% Érdemes több futtatást csinálni Egy próba még nem bizonyíték Hézag próba Mersenne Twister, n=25 minta Hézag: [1/3,2/3] P-érték: 0,57 Jó, de rendkívül pici a minta Hossz Megfigyelt Várt 1 6 3,7 2 1 1,23 3 0 0,41 4 0 0,14 Kolmogorov-Smirnov próba Kétmintás próba A minta tapasztalati eloszlás függvény és a null hipotézis szerinti elméleti eloszlásfüggvény különbségét hasonlítja össze Ezek maximuma egy adott eloszlás függvényt követ Hasonlóan kvartilis táblázattal mondjuk meg az eredményt Diehard próbacsomag Inkább Kolmogorov-Smirnov alapú tesztek leginkább Születésnap próba Sorba állított elemek különbsége exponenciális eloszlást követ Parkoló próba Préselés próba (squeeze-test) 4
Exponenciális eloszlás (szülinap próba) Egyenletes eloszlás KÖSZÖNÖM A FIGYELMET! 5