Randomisierte Algorithmen Anyone who considers arithmetical methods of producing random digits is, of course, in a state of sin. John von Neumann, 1951 1 / 59 Randomisierte Algorithmen Randomisierte Algorithmen 13. Pseudo-Zufallszahlen Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 2 / 59 Pseudo-Zufallszahlen Überblick Überblick Allgemeines Konkrete Generatoren für Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen 3 / 59 Pseudo-Zufallszahlen Allgemeines Überblick Allgemeines Konkrete Generatoren für Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen 4 / 59 Pseudo-Zufallszahlen Allgemeines Wünsche 5 / 59 Pseudo-Zufallszahlen Allgemeines Wünsche I I I I I schnelle Erzeugbarkeit lange (gar keine?) Periode Reproduzierbarkeit portable Implementierbarkeit schnelles Vorwärtsspringen 5 / 59 Pseudo-Zufallszahlen Allgemeines Wünsche I schnelle Erzeugbarkeit lange (gar keine?) Periode Reproduzierbarkeit portable Implementierbarkeit schnelles Vorwärtsspringen I auch von der zyklischen Folge 0, 1, . . . , m − 1, 0, 1 . . . erfüllt. I große Aufgabe: Zahlen sollen „zufällig“ aussehen I I I I 5 / 59 Pseudo-Zufallszahlen Allgemeines Wünsche: konkreter 1. Die Zufallszahlen sollen, etwa in [0; 1[, gleichverteilt sein. 2. Die Zufallszahlen sollen unabhängig voneinander sein. 1. unter Umständen noch zu garantieren; 2. im allgemeinen verletzt I I I man ist zufrieden, wenn die erzeugten Zahlen „unabhängig aussehen“ statistische Abhängigkeiten sollen nicht „einfach“ feststellbar sein diese/andere Eigenschaften abhängig von Anwendung I unterschiedliche Anforderungen z. B. für Monte-CarloSimulationen versus Kryptographie 6 / 59 Pseudo-Zufallszahlen Allgemeines Physikalische Prozesse zur Erzeugung von Zufallszahlen: I keine Gleichverteilung I keine Unabhängigkeit I keine Reproduzierbarkeit 7 / 59 Pseudo-Zufallszahlen Allgemeines (Pseudo-)Zufallszahlengenerator (PRNG) Struktur G = (S, s0,T , U , G) mit folgenden Komponenten: I einer endliche Menge S von Zuständen, I einem Anfangszustand s 0 ∈ S, I einer Überführungsfunktion T : S → S, I einer Menge U von Ausgabewerten und I einer Ausgabefunktion G : S → U . I Generator I I I beginnt in Zustand s0 und durchläuft Zustände s1, s2, . . . , mit si+1 = T (si ) produziert in Zustand si Ausgabe ui = G(si ) 8 / 59 Pseudo-Zufallszahlen Allgemeines PRNG (2) I I I Zustandsmenge S endlich =⇒ Folge s0, s1, s2, . . . und Folge der Ausgaben wird schließlich zyklisch Länge ρ des Zyklus heißt auch Periodenlänge des PRNG. 9 / 59 Pseudo-Zufallszahlen Allgemeines Bauplan vieler Generatoren I I I Zustandsmenge: Zm = {0, 1, . . . , m − 1} Ausgabefunktion: ui = si /m Rundung? Ausgabewerte: reelle Zahlen im Intervall I I I I I I [0; 1[ oder [0; 1] immer überprüfen! Bei aufwändigeren Generatoren: Zustand besteht aus k > 1 Zahlen (xi , xi−1, . . . , xi−k+1 ) kleiner m Ausgabefunktion: z. B. ui = xi /m. 10 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Überblick Allgemeines Konkrete Generatoren für Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen 11 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Von Neumanns Middle-square-Generator I I I b-Bit Zahlen. Startwert x 0 aus xn−1 ergibt sich xn so: I I I Man schreibt das Quadrat von x n−1 als 2b-Bit Zahl. Die mittleren b Bits bilden x n . Generator praktisch unbrauchbar: Periodenlänge zu klein 12 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Muddle-square-Generator von Blum/Blum/Shub Verallgemeinerung von Levin: I Alle Zahlen sind r Bits lang. I m: Produkt zweier großer Primzahlen der Form 4` + 3. I x 0 relativ prim zu m. I Zahl z als „Maske“ I Sind die Dualzahldarstellungen x = (ar −1 · · · a 0 )2 und z = (br −1 · · · b0 )2 gegeben, so sei x · z = ar −1br −1 + · · · + a0b0. 13 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Muddle-square-Generator (2) I Levins Generator: xn+1 = xn2 (mod m) un+1 = xn+1 · z (mod 2) I I I Satz Bei zufälliger Wahl von x 0, m und z übersteht der Generator alle statistischen Tests, die nicht mehr Zeit benötigen als das Faktorisieren natürlicher Zahlen. Generator von Blum/Blum/Shub: z = 1 in der Praxis anscheinend keine große Bedeutung 14 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Lineare Kongruenzgeneratoren I LCG festgelegt durch I I I I I Anfangswert x 0, Modulus m, Multiplikator a Inkrement c Regel x n = ax n−1 + c I (mod m) LCG heißt multiplikativ (MLCG), wenn c = 0. 15 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen LCG (2) Satz Der LCG mit xn = axn−1 + c (mod m) hat genau dann volle Periodenlänge, wenn gilt: I ggt(m, c) = 1, I q prim und q|m =⇒ q|a − 1 und I 4|m =⇒ 4|a − 1. 16 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen RANDU I I I I I LCG mit a = 65539, c = 0 und m = 231 schlecht lange im IBM/360 Betriebssystem benutzt Periodenlänge 229 schlechte Gitterstruktur (siehe später) 17 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen „Unix“ rand und Co. I rand I I I I Standard-LCG mit a = 1 103 515 245, c = 12345, m = 231 und x 0 = 12345. schlecht vor allem die niedrigwertigen Bits der erzeugten Zahlen drand48 I I I LCG mit m = 248, a = 25 214 903 917 und c = 11. volle Periodenlänge Besser als rand, aber auch er besteht manche statistische Tests nicht. 18 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen guter LCG von Marsaglia LCG mit I a = 69069 I c = 1 I m = 232 19 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Mehrfach rekursive Generatoren (MRG) xn = a1xn−1 + · · · + ak xn−k+1 (mod m) Konstanten a1, . . . , ak aus dem Bereich {−(m − 1), . . . , m − 1} 20 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Lagged Fibonacci generators (LFG) Spezialfälle der MRG: I Name wegen: I I I xn = xn−1 + xn−2 (mod m) xn = xn−r + xn−s (mod m) zu schlecht besser: für geeignete Zahlen r und s statt Addition auch andere Operationen möglich 21 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Anmerkungen zu LFG I Exklusives Oder in LFG ist schlecht. I Lange Zeit galt (r, s) = (24, 55) und Addition als gut. I I I für m = 2e Periodenlänge 2e−1 (255 − 1) allerdings z. B. die niedrigstwertigen Bits der x i nicht „gut“ verteilt. Marsaglia (1985) schlägt einige Varianten vor 22 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen MRG von L’Ecuyer xn = 2 620 007 610 006 878 699 xn−1 + 4 374 377 652 968 432 818 xn−2 + 667 476 516 358 487 852 xn−3 mod (231 − 1)(231 − 2000169) 23 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Satz Ein MRG hat maximale Periodenlänge ρ = mk − 1, falls m prim ist und das charakteristische Polynom P(z) = zk − a1zk−1 − · · · − ak primitives Polynom des Körpers Zm ist. 24 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Inverser Kongruenzgenerator (ICG) I I p sei prim ICG festgelegt durch xn+1 = (axn−1 + c) I I I I I (mod p) für xi = 0 sei festgelegt: 0−1 = 0 bemerkenswert gute theoretische Eigenschaften bestehen empirische Tests mit sehr guten Ergebnissen. Nachteil: nicht ganz einfache Implementierung (Geschwindigkeit des Generators?) konkrete Parameter für gute ICG unter http://random. mat.sbg.ac.at/generators/wsc95/inversive/. 25 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Mersenne-Twister (Matsumoto/Nishimura) I I I I I I I I alle Zahlen sind Bitvektoren der Länge w r ist eine Zahl mit 0 ≤ r ≤ w − 1 zwei Zahlen k und m mit 1 ≤ m < k w × w-Matrix A geeignet gewählt l : die „unteren“ (lower) r Bits von x xn+1 n+1 u xn : die „oberen“ (upper) w − r Bits von xn l : die Konkatenation der beiden Bitfolgen xnu |xn+1 dann: l xn+k = xn+m ⊕ (xnu |xn+1 )A . 26 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Mersenne-Twister (2) I MT19937: konkrete Implementierung eines Mersenne-Twisters I I I I I Periodenlänge 219937 − 1 ausgezeichnete Eigenschaften bei statistischen Tests mehr: http://www.math.sci.hiroshima-u.ac.jp/ ~m-mat/MT/emt.html wird z.B. in Python (seit 2.3), R, Ruby, matlab, C++ 11, etc. eingesetzt auch MT noch verbesserungsfähig I I Arbeit von Panneton, L’Ecuyer, Matsumoto: http://www.iro.umontreal.ca/~lecuyer/myftp/ papers/wellrng.pdf WELL-Generatoren: teils noch längere Periode, und noch bessere Eigenschaften als MT: http: //www.iro.umontreal.ca/~panneton/WELLRNG.html 27 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Der Zellularautomat „Regel 30“ als PRNG I I Feld von k Bits xk−1, . . . , x 1, x 0 berechne neue Werte y0, . . . , yk−1 gemäß „Regel 30“: xi+1xi xi−1 yi I I I I 111 110 101 100 011 010 001 000 0 0 0 1 1 1 1 0 alle Indexrechnungen i − 1 und i + 1 modulo k die yi bilden die Werte xi für den nächsten Schritt. Name wegen der Folge 00011110 der Bits für die yi früher in Mathematica benutzt 28 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Regel 30 (2) I guter Generator, wenn I I I I I k groß genug (in Mathematica: einige Hundert) Anfangskonfiguration mit mindestens einer 1 zunächst größere Zahl von Initialisierungsschritten in einer fest gewählten Zelle die Folge der durchlaufenen Werte benutzt wird Generator besteht z. B. alle Test in Marsaglia’s diehard Test (Schloissnig, 2003) 29 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Kombination mehrerer Generatoren I I I I Idee: baue einen neuen Generator aus mehreren alten häufig: größere Periodenlänge manchmal besseres statistisches Verhalten zwei Kombinationsverfahren gerne verwendet: . . . 30 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen Shuffling I I I zwei Generatoren für Zahlenfolgen xi und yi . Tabelle mit einer gewissen Anzahl zuletzt erzeugter xi . wenn nächster Wert benötigt: I I I benutze nächstes y j , um zufällig Wert aus Tabelle zu wählen entsprechender Platz wird mit nächstem neuen x i gefüllt Nachteile: I I theoretisch nicht gut verstanden schnelles Überspringen von Werten unklar 31 / 59 Pseudo-Zufallszahlen Konkrete Generatoren für Pseudo-Zufallszahlen zweite Kombinationsmethode I I I I aus Zufallsfolgen x 0, x 1, . . . und y0, y1, . . . erzeuge neue Folge z0 = x 0 • y0, z1 = x 1 • y1, . . . Periodenlänge kann größer werden Uniformität der Verteilung im allgemeinen besser Unabhängigkeit aufeinanderfolgender Werte im allgemeinen größer 32 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Überblick Allgemeines Konkrete Generatoren für Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen 33 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Qualität von PRNG I Wie stellt man fest, ob ein PRNG „gut“ ist? Was heißt überhaupt „gut“? I verschiedene Tests I 34 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Tests I I Testergebnisse sind üblicherweise Zahlen (z.B. zwischen 0 und 1), die als Qualitätsangabe interpretiert werden können. theoretischer Test: I I Werte explizit berechenbar empirischer Test: I untersuche lange Folge erzeugter Zufallszahlen 35 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Chi-Quadrat-Statistik I I I I I s1, . . . , sk : mögliche Ergebnisse eines Zufallsexperiments, die mit Wahrscheinlichkeiten p1, . . . , pk auftreten. n unabhängige Zufallsexperimente: Yi : absolute Häufigkeit, mit der Ergebnis si auftritt Í also i Yi = n und E[Yi ] = npi . χ 2-Statistik der beobachteten Größen Y1, . . . , Yk : k Õ (Yi − E[Yi ])2 V = E[Yi ] i=1 36 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Chi-Quadrat-Statistik (2) I Einsetzen von E[Yi ] = npi ergibt V = k Õ (Yi − npi )2 npi i=1 k Õ Yi2 − 2Yi npi + n2pi2 = npi i=1 k 1 Õ Yi2 = − 2n + n n i=1 pi k = 1 Õ Yi2 −n . n i=1 pi 37 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Chi-Quadrat-Statistik (3) I I Wie ist die Größe V verteilt? Tabellen mit Näherungswerten enthalten I I I I für jedes ν = k − 1 (Anzahl der Freiheitsgrade) eine Zeile für einige p, z. B. 1%, 5%, . . . , 99% eine Spalte Beachte: Anzahl n geht nicht ein; muss groß genug sein; Daumenregel: n so groß, dass jedes si ≥ 5. dann besagt Wert x in Zeile ν = k − 1 und Spalte p: V ist kleiner oder gleich x mit Wahrscheinlichkeit p. 38 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Chi-Quadrat-Statistik: Beispiel 1 I I I p ν = 11 0.01 3.053 0.05 4.575 0.25 7.584 0.5 10.34 0.75 13.70 0.95 19.68 0.99 24.72 ist k = 12, also ν = 11, und hat man in einer Versuchsreihe Wert V = 29.44 ermittelt, dann liest man aus der Tabelle ab: In 99% der Fälle ist V ≤ 24.72, also ist V > 24.72 und erst recht V > 29.44 in höchsten einem Prozent der Fälle. Also: Es ist sehr unwahrscheinlich, dass die Versuchsreihe der angenommenen Verteilung genügt. 39 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Chi-Quadrat-Statistik: Beispiel 2 I I I p ν = 11 0.01 3.053 0.05 4.575 0.25 7.584 0.5 10.34 0.75 13.70 0.95 19.68 0.99 24.72 Wenn die Yi alle sehr sehr gut den Erwartungswerten entsprechen, dann ist V klein, etwa V = 1.17. Tabelle: auch das passiert in weniger als 1% der Fälle 40 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Kolmogorov-Smirnov-Test (KS-Test) I I gegeben: n unabhängige Zufallsexperimente mit Ergebnissen X 1, . . . , Xn . diese induzieren eine empirische Verteilungsfunktion Fn (x) = I |{i | Xi ≤ x }| . n Zum Vergleich mit einer vorgegebenen kontinuierlichen Verteilungsfunktion F (x) berechnet man die Größen √ Kn+ = n max (Fn (x) − F (x)) und −∞<x <+∞ √ Kn− = n max (F (x) − Fn (x)) −∞<x <+∞ 41 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Kolmogorov-Smirnov-Test (2) I I I Für die Kn+ und Kn− gibt es wieder Tabellen mit Zeilen für verschiedene n und Spalten für verschiedene p: Wert x in Zeile n und Spalte p: K ist kleiner oder gleich (bzw. größer) x mit Wahrscheinlichkeit p. mögliche Anwendung: I I I I zunächst mehrere χ 2-Tests Verteilung für χ 2 (jedenfalls näherungsweise) bekannt auf die sich ergebenden Wahrscheinlichkeiten KS-Test anwenden analog: I Verteilung der Kn ist (näherungsweise für große n) bekannt und darauf weiterer KS-Test anwendbar. 42 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Einfache empirische Tests I Ziele: Informationen über I I I I die vermutliche Art der Verteilung die Un-/Abhängigkeit der erzeugten Zahlen eventuelle Korrelationen Frei verfügbare Programmpakete zum Beispiel: I I I Diehard: http://stat.fsu.edu/pub/diehard/ dieharder: https: //www.phy.duke.edu/~rgb/General/dieharder.php TestU01: http://www.iro.umontreal.ca/~simardr/ testu01/tu01.html I I enthält auch Implementierungen von fast 200 PRNG („some are good and many are bad“) NIST statistical test suite: http: //csrc.nist.gov/groups/ST/toolkit/rng/index.html 43 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Vereinbarung I I U0, U1, . . . Folge reeller Zahlen, angeblich unabhängig und gleichverteilt in [0, . . . , 1]. Werden für einen Test nichtnegative ganze Zahlen benötigt, dann statt dessen die Folge der Yi = bdUi c (für geeignetes d ∈ N) 44 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen EinfacheTest I am simpelsten: stelle fest, ob unter den Yi jeder mögliche Wert 0, . . . , d − 1 gleich oft vorkommt. I Serial Test: I I analog für Paare, Tripel, etc. beachte: benutze nicht überlappende Vektoren Yi = (Ysi , Ysi+1, . . . Ysi+s−1 ) (und nicht Vektoren, die sich überlappen) 45 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Lückentest (gap test) I I I I zwei relle Zahlen 0 ≤ α < β ≤ 1 gegeben Betrachte die Längen der maximalen Teilfolgen Uj , . . . , Uj+r , so dass α ≤ Uj+r ≤ β aber die vorherigen Werte nicht. Man spricht dann von einer Lücke der Länge r . Für p = β − α ist pr = p(1 − p)r die Wahrscheinlichkeit für eine Lücke der Länge r. χ 2-Test anwendbar 46 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Permutationstest I I I I betrachte nicht überlappende Vektoren Ui = (Usi , Usi+1, . . . Usi+s−1 ) bestimme Permutation π der Indizes, die die Komponenten sortiert. erstelle Statistik, welche Permutation wie häufig auftritt vergleiche mit der theoretisch gegebenen Gleichverteilung 47 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Maximum-of-t Test I I Berechne die Größen Vi = max{Usi , Usi+1, . . . Usi+s−1 } Falls die Uj gleichverteilt sind, ist P(Vi ≤ x) = P(max{Usi , Usi+1, . . . Usi+s−1 } ≤ x) Ö = P Usi+j ≤ x = xs . I Diese Hypothese kann mit einem KS-Test überprüft werden. 48 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Geburtstagsabstandstest (birthday spacings test) I I I I I I I gegeben: Pseudozufallszahlen Y1, Y2, . . . , Ym aus {1, . . . , n} Z 1, Z 2, . . . , Zm : die Zahlen aufsteigend sortiert berechne die Abstände Si = Zi+1 − Zi Sei R = {Si | ∃j < i : S j = Si } die Anzahl der mehrfach vorkommenden Abstände. R näherungsweise Poisson-verteilt mit Parameter λ = m3 /(4n). χ 2-Test Lagged-Fibonacci-Generatoren (z. B. xn = xn−24 + xn−55 (mod 2e )) haben üblicherweise Probleme mit dem Geburtstagsabstandstest. 49 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Weitere Tests I I betrachte (besonders) schlechten PRNG xn+1 = 85xn + 2 (mod 256) mit Ausgabefunktion un = xn /256. zeichne überlappende Paare (ui , ui+1 ) im Einheitsquadrat: 50 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Weitere Tests I I betrachte (besonders) schlechten PRNG xn+1 = 85xn + 2 (mod 256) mit Ausgabefunktion un = xn /256. zeichne überlappende Paare (ui , ui+1 ) im Einheitsquadrat: 1 "85x+2_mod_256" 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 I I 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Gitterstruktur Tritt bei linearen Kongruenzgeneratoren aber auch bei einigen anderen Generatorarten auf. 50 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Spektraltest für Dimension s I I I s-dimensionale überlappende Vektoren ui = (ui , ui+1, . . . , ui+s−1 ) im Einheitshyperwürfel ermittle ds = maximaler Abstand zwischen zwei Hyperebenen, genommen über alle Familien paralleler Hyperebenen im Einheitswürfel, die alle Punkte ui beinhalten. je kleiner ein ds ist, als desto „besser“ der Generator (hinsichtlich Dimension s) 51 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Diskrepanz und Sterndiskrepanz I I N Vektoren ui = (ui , ui+1, . . . , ui+s−1 ) im Einheitshyperwürfel Î für Menge R = sj=1 [α j , β j [ mit 0 ≤ α j < β j ≤ 1 sei I I I I (R) die Anzahl der ui , die in R liegen, und Î V (R) = sj=1 (β j − α j ) das Volumen von R. s-dim. Diskrepanz D N(s) der Punkte u0, . . . , uN −1 ist D N(s) = max |V (R) − I (R)/N | . R I I I Sterndiskrepanz D N∗(s) : nur R mit einer Ecke im Nullpunkt Punkteverteilung „zu ungleich“: zu große Diskrepanz Punkteverteilung „zu gleichmäßig“: zu kleine Diskrepanz 52 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Näheste-Paare-Test (nearest pair test) I I I erzeuge zufällig n Punkte im s-dimensionalen Einheitshyperwürfel bestimme das Minimum D der (euklidischen) Abstände zwischen je zwei Punkten. bekannt: Für große n ist T = n2Ds /2 exponentiell verteilt mit Erwartungswert 1/Vs , wobei Vs Volumen der s-dimensionalen Einheitskugel 53 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Ränge zufälliger Boolescher Matrizen I Eine echt zufällig mit Nullen und Einsen gefüllte m × n-Matrix hat Rang r mit 1 ≤ r ≤ min(m, n) mit Wahrscheinlichkeit −(n−r )(m−r ) 2 r −1 Ö (1 − 2i−n )(1 − 2i−m ) i=0 I 1 − 2i−r . insbesondere: nutze für die Bits jeweils einer Zeile der Matrix die Bits einer Pseudozufallszahl. 54 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen OPSO-Test (overlapping pairs sparse occupancy test) I I I fasse je 10 Bits als ein Symbol aus einem 1024-elementigen Alphabet auf erzeuge 221 + 1 solche Symbole und prüfe alle 221 überlappenden Paare auf fehlende Symbolpaare bekannt: Deren Zahl ist normalverteilt mit Erwartungswert 141 909 und Standardabweichung 290. 55 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen weitere Tests . . . I I Marsaglia schlägt auch noch andere Tests vor, bei denen allerdings nicht klar ist, welches die korrekten theoretischen Werte sind, mit denen die empirischen Ergebnisse verglichen werden müssen. Die Vergleichswerte bestimmt er daher ebenfalls mit der Hilfe von PRNGs. hmmm . . . 56 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen weitere Tests . . . I I I Marsaglia schlägt auch noch andere Tests vor, bei denen allerdings nicht klar ist, welches die korrekten theoretischen Werte sind, mit denen die empirischen Ergebnisse verglichen werden müssen. Die Vergleichswerte bestimmt er daher ebenfalls mit der Hilfe von PRNGs. hmmm . . . L’Ecuyer: Das ist akzeptabel, solange viele vermutlich gute Generatoren zu übereinstimmenden Zahlen kommen, die als Ersatz für die fehlenden theoretischen Werte genommen werden. 56 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen OQSO Test (overlapping quadruples sparse occupancy) I I analog zum OPSO-Test, aber Quadrupel von Symbolen über einem 32-elementigem Alphabet. auch hier Erwartungswert nur experimentell bestimmbar. 57 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Parking lot test I I I I gegeben: z. B. ein Quadrat mit Seitenlänge 100 darauf sollen Einheitskreise („Hubschrauber von oben gesehen“) an zufällig gewählten Stellen ui positioniert („geparkt“) werden. wähle ui als Mittelpunkt des Kreises, sofern der sich nicht mit schon festgelegten Kreisen schneidet. Man macht n Versuche und zählt, wie oft ein Kreis ohne Kollision positioniert werden konnte. 58 / 59 Pseudo-Zufallszahlen Tests für Pseudo-Zufallszahlen Auf Wiedersehen! 59 / 59