Algorithmen zur Datenanalyse in C++
Hartmut Stadie
04.06.2012
Einführung
Zufallszahlengeneratoren
Übersicht
Einführung Informationen
Zufallszahlengeneratoren
Informationen
Ablauf:
Vorlesung: montags 16:00 Hörsaal III
Übung: im Anschluss an die Vorlesung in 9/302 und 9/305
Material:
Stroustrup: The C++ Programming Language, 3rd edition http://www.lernnetz-sh.de/kmLinux/doc/C++-
Kurs/index.html
http://www.highscore.de/cpp/einfuehrung/
Press et al: Numerical Recipes, 3rd edition http://wwwiexp.desy.de/studium/lehre/cplusplus/
Übersicht
Einführung
Zufallszahlengeneratoren Einführung
Linear kongruenter Generator Prüfung von Zufallsgeneratoren
Monte Carlo-Methoden
Monte Carlo-Methoden:
leistungsfähige Computer erlauben es, (stat.)Probleme zu simulieren
grundlegend ist die Erzeugung von Zufallszahlen
Erzeugung von Zufallszahlen:
unmöglich, Computer deterministisch erzeuge Pseudo-Zufallszahlen
Zahlenfolge hängt vom Startwert (Saatzahl,seed) ab Zahlen wiederholen sich irgendwann wieder (Periode) Material: V. Blobel, E. Lohrmann „Statistische und numerische Methoden der Datenanalyse“
Zufallszahlengeneratoren
Erzeuge gleichverteilte Zufallszahlen:
U(0,1) =
(1 0≤u ≤1 0 sonst
Linear kongruenter Generator
einer der einfachsten Generatoren Ij = (a·Ij−1+c) modmunduj = mIj sollte nicht mehr benutzt werden
Wertefolge hängt von der Saatzahl (I0) ab maximale Periodem(hängt vonaundcab)
Implementierung
double myrand() { const int a = 205;
const int c = 29573;
const int m = 139968;
...
ij = ....;
return (double)ij/(double)m;
}
Geeignete Konstanten für Periode>105:
a 205 281 1021 421
c 29573 28411 25673 54773
m 139968 134456 121500 259200
Prüfung von Zufallsgeneratoren
Tests
Test auf gleichförmige Verteilung:
VerteileNZufallszahlen aufk Intervalle der Länge 1/k und teste überχ2-Verteilung
Korrelationstest:
Betrachtensukzessive Zufallszahlen als Koordinaten im n-dimensionalen Raum. Punkte liegen auf Hyperebenen Lückentest (gap test):
Wähle zwei Zahlen mit 0≤α≤β ≤1. Erzeuger +1 Zufallszahlen überprüfe Wahrscheinlichkeit, dass die erstenr Zahlen außerhalb und die letzte Zahl innerhalb sind
Random Walk-Test:
Wähle eine Zahl 0≤α1 und zähle fürnZufallszahlen
Korrelationstest (a = 5, b = 3, m = 16)
uj
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
j+1u
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Test auf gleichförmige Verteilung (a = 5, b = 3, m = 16)
Entries 1000
Mean 0.4693
RMS 0.2879
Underflow 0
Overflow 0
Integral 1000
Skewness 0.08104
/ ndf
χ2 107.2 / 9
Prob 0
p0 89.28 ± 2.99
0 20 40 60 80 100 120
Entries 1000
Mean 0.4693
RMS 0.2879
Underflow 0
Overflow 0
Integral 1000
Skewness 0.08104
/ ndf
χ2 107.2 / 9
Prob 0
p0 89.28 ± 2.99