Randomisierte Algorithmen - 13. Pseudo

Werbung
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
Herunterladen