Lösung Aufgabe 2. Es muss ein Weg gefunden werden, die Länge des längsten Laufs identischer Ziffern zu identifizieren:

Ähnliche Dokumente
Programmiertechnik II

Zufallszahlen. Diskrete Simulation. Zufallszahlengeneratoren - Zufallszahlen

7 Zufallszahlen, Simulation

Zufallszahlenerzeugung

IT-Security. Teil 15: Zufall

15 Grundlagen der Simulation

Lineare Kongruenzgeneratoren und Quicksort

Pseudozufallsgeneratoren

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 8. Zufallszahlen Generatoren Anwendungen

Pseudo-Zufallsgeneratoren basierend auf dem DLP

Simulation und Prognose

4.1 Der Blum-Blum-Shub-Generator

Simulation von Zufallszahlen. Grundlage: zufällige Quelle von Zufallszahlen, durch einfachen rekursiven Algorithmus am Computer erzeugt

Lineare Algebra I 5. Tutorium Die Restklassenringe /n

Stochastik-Praktikum

Kryptographische Protokolle

Zufallszahlen Mathematik zum Nachbilden von Zufälligkeit SommerUni 2013 Bergische Universität Wuppertal Autor: Prof. Dr.

Pollards Rho-Methode zur Faktorisierung

Wahrscheinlichkeitsrechnung und Statistik

Lösung der Zusatzaufgabe

Das RSA-Verfahren - Einsatz von Standardalgorithmen in der Kryptologie

Algorithmische Kryptographie

Zufall oder Absicht?

Grundlagen der Monte-Carlo-Simulation

Wahrscheinlichkeitsrechnung und Statistik

Matlab Zufall / Programmieren mit Matlab. Dr. Hermann Lehner Departement Informatik, ETH Zürich

Zufallszahlen in AntBrain

Nr. 4: Pseudo-Zufallszahlengeneratoren

Erzeugung von Pseudozufallszahlen mit Computern

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 4: Zahlentheorie

Grundlagen der Arithmetik und Zahlentheorie

Monte-Carlo-Methode. mit Pseudo- und Quasizufallszahlen

Kapitel 4. Kapitel 4 Restklassen (die modulo-rechnung)

Modellbildung und Simulation

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)

Simulation von Zufallsvariablen und Punktprozessen

Zufallszahlen in Testbetten und Simulationen

Zufallszahlen erzeugen

Kapitel III Ringe und Körper

Einführung in die Simulation. Dr. Christoph Laroque Wintersemester 11/12. Dresden,

1. Grundbegri e der Stochastik

1.4 Die maximale Periode

Informationssicherheit III

1 Zahlentheorie. 1.1 Kongruenzen

Probabilistische Primzahltests

Form der Äquivalenzklassen

Vorkurs für. Studierende in Mathematik und Physik. Einführung in Kryptographie Kurzskript 2015

Diskreter Logarithmus und Primkörper

15 Über Zufallsgeneratoren (fakultativ)

Probabilistische Algorithmen Zufallszahlen - Monte Carlo - Genetische Programmierung

4 Kryptologie. Übersicht

Zufälle gibt s, oder gibt s die nicht? Martin Köhler Science Café Hamburg, 25. Juni 2014

2: Restklassen 2.1: Modulare Arithmetik

Relationen und DAGs, starker Zusammenhang

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

3. Diskrete Mathematik

Statistik I für Betriebswirte Vorlesung 4

Lösungen der Aufgaben

Vorlesung Mathematik 2 für Informatik

Anleitung: Standardabweichung

Der Euklidische Algorithmus Dieter Wolke

Statistik, Datenanalyse und Simulation

Theoretische Biophysik - Statistische Physik

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Anhang 1: Lamellare Strukturen in Systemen mit Bolaamphiphilen

Interim. Kapitel Einige formale Definitionen

Euklidische Algorithmus, Restklassenringe (Z m,, )

Das Quadratische Reste Problem

Der chinesische Restsatz mit Anwendung

Regine Schreier

1. Welche Eigenschaften sollte ein Pseudo-Random Generator haben?

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Messprotokoll: Aufnahme der Quantenzufallszahl

Probabilistische Algorithmen

Beispiel bestimme x Z mit. es gilt also. gilt dann. für x = 1 i k c i (M/m i ) v i gilt. y c i mod m i (1 i k), nämlich y = x mod M

Einführung in die Informatik Turing Machines

Turing-Maschinen: Ein abstrakes Maschinenmodell

Miller-Rabin Test. Primzahl- und Zerlegbarkeitstests. Zeugen für die Zerlegbarkeit ganzer Zahlen

Der kleine Satz von Fermat

KLAUSUR zur Numerik I mit Lösungen. Aufgabe 1: (10 Punkte) [ wahr falsch ] 1. Die maximale Ordnung einer s-stufigen Quadraturformel ist s 2.

Einführung in die Informatik Turing Machines

Anwendungen der modularen Arithmetik

Beweis des Satzes von Euler

Prof. S. Krauter Dezimalbruchdarstellung rationaler Zahlen DezDarst.doc. Über die Darstellung von rationalen Zahlen als Dezimalbrüche.

2008W. Vorlesung im 2008W Institut für Algebra Johannes Kepler Universität Linz

WS 2009/10. Diskrete Strukturen

2.4. Kongruenzklassen

7 Die Sätze von Fermat, Euler und Wilson

Einführung (1) In der Praxis finden Sie viele Anwendungsfelder für Zufallszahlen. Beispiele

8. Woche Quadratische Reste und Anwendungen. 8. Woche: Quadratische Reste und Anwendungen 163/ 238

Praktisch modulo n rechnen

Interpolation und Integration mit Polynomen

Proseminar Schlüsselaustausch (Diffie - Hellman)

Zahlentheorie, Arithmetik und Algebra

Teilbarkeitslehre und Restklassenarithmetik

Fakultät für Informatik und Automatisierung, Technische Universität Ilmenau. Über Polynome mit Arithmetik modulo m.

Literatur. [9-3] [9-4]

Transkript:

Lösung Aufgabe 2 Es muss ein Weg gefunden werden, die Länge des längsten Laufs identischer Ziffern zu identifizieren: maxlaenge<-1 ; aktuellelaenge <- 1 ; old<-vek[1] #Startwerte for (j in 2:20) { if (vek[j] == old) { aktuellelaenge <- aktuellelaenge + 1 if (aktuellelaenge > maxlaenge) maxlaenge <- aktuellelaenge} else { old <- vek[j] aktuellelaenge <- 1 } } Dr. D. Steuer, Tel. 2819 67

Hat man dieses Teilproblem gelöst, kann man die Struktur der Simulation von gestern direkt einsetzen. results <- rep(na, 10000) for (i in 1:10000){ vek <- sample(c(0,1), 20, replace=true) maxlaenge<-1; aktuellelaenge <- 1; old<-vek[1] for (j in 2:20) { if (vek[j] == old) aktuellelaenge <- aktuellelaenge + 1 else { if (aktuellelaenge > maxlaenge) maxlaenge <- aktuellelaenge old <- vek[j] aktuellelaenge <- 1 } } results[i]<- maxlaenge } Dr. D. Steuer, Tel. 2819 68

In der Regel ist man nicht an solchen One-shot-Lösungen interessiert. Wenn möglich, versucht man die Lösungen so zu verallgemeinern, dass man das Programm in eine Funktion verwandelt, die dann flexibel bestimmte Parameter setzen kann, wie hier den Umfang der Stichprobe. maxrun <- function(stichprobenlaenge){ vek <- sample(c(0,1), stichprobenlaenge, replace=true) maxlaenge<-1 ; aktuellelaenge <- 1 ; old<-vek[1] for (j in 2:stichprobenlaenge) { if (vek[j] == old) aktuellelaenge <- aktuellelaenge + 1 else { if (aktuellelaenge > maxlaenge) maxlaenge <- aktuellelaenge old <- vek[j] ; aktuellelaenge <- 1 } } maxlaenge } Dr. D. Steuer, Tel. 2819 69

Dann gehen so nette Dinge, wie die Veranschaulichung der Entwicklung des Durchschnitts der längsten Lauflänge bei wachsender Stichprobenanzahl. Schon für diese Aufgabe ist eine mathematischen Herleitung sehr schwer! plot(1,xlim=c(1,100),ylim= c(1,10), t="n", xlab="stichprobenlänge", ylab="maximale Lauflänge") for (stichprobenlaenge in seq(10,100,10)) { results <- rep(na, 1000) for (i in 1:1000){ results[i] <- maxrun(stichprobenlaenge) } points(stichprobenlaenge, mean(results)) } Dr. D. Steuer, Tel. 2819 70

Mit Ausgabe:: maximale Lauflänge 2 4 6 8 10 0 20 40 60 80 100 Stichprobenlänge Dr. D. Steuer, Tel. 2819 71

Zufall im Computer Experimente in unserem Sinne sind Computerexperimente. Problem: Computer sind per Definition deterministisch und sollen es auch sein! Wie bekomme ich zufällige Ergebnisse? Bevor Computer allgemein verfügbar waren, konnte man tatsächlich Tabellen mit Zufallszahlen kaufen. Die erste solche Tabelle erschien 1927 mit 40000 Zufallsziffern zufällig aus den Volkszählungsdaten gezogen (Tipett (1927)). Sogar in 2001 war in Bamberg/Bauer, Statistik, noch eine Seite mit Zufallsziffern. Es gab in der Zeit nach dem 2. Weltkrieg sogar spezialisierte Maschinen Dr. D. Steuer, Tel. 2819 72

zur Zufallszahlenerzeugung. 1955 wurde von der RAND Corporation eine Tabelle mit einer Million Zufallsziffern vermarktet. Der Nachteil natürlich: Extrem schlecht handzuhaben, wenig Zahlen! Eine (in der Regel aufwändige) Möglichkeit besteht darin, die bekannten echt zufälligen physikalischen Prozess zur Zufallsgewinnung zu nutzen und einen Computer mit einer Maschine zu koppeln, die diese Prozesse in Zufallszahlen verwandelt. Gibt es tatsächlch, teilweise sogar kommerziell! www.randomnumber.info oder random.org stellen Zufallszahlen auf Basis des Photonenspaltexperiments zur Verfügung. Dr. D. Steuer, Tel. 2819 73

www.fourmilab.ch/hotbits stellt Zufallszahlen über Geigerzählermessungen zur Verfügung (sogar mit Sound!). Schon der legendäre Mark I Computer (1951) enthielt eine Schaltung, die jeweils 20 Zufallsbits in ein Register der Maschine schrieb, die über einen widerstandsgesteuerten Rauschgenerator erzeugt wurden. Übrigens auf direkte Empfehlung von Alan Turing! Erst moderne CPUs haben heute teilweise wieder Zufallsgeneratoren in Hardware eingebaut, die auf thermischen Schwankungen beruhen. Es werden mehrere überlagerte Wellen möglichst teilerfremder Frequenzen erzeugt und deren Amplituden dann langsam abgetastet. Die Schwingungsfrequenzen der Generatoren schwanken ständig minimal wegen unvermeidlicher Temperaturschwankungen, weshalb man so Zufallszahlen erhalten kann. Der VIA C3 Nehemiah war die erste CPU der neueren Zeit, die ein solches Device eingebaut hatte (2003). Dr. D. Steuer, Tel. 2819 74

Eine kuriose Idee aus der Anfangszeit der Rechenmaschinen war, die letzten Nachkommastellen aufwändiger Multiplikationen als Zufallsziffern zu nutzen, da die mechanische Ungenauigkeit so groß war, dass man die letzten Stellen nicht vorhersagen konnte! Für die Verwendung in der Wissenschaft haben diese Zufallsquellen einige prinzipielle Probleme. Die exakten theoretischen Verteilungen der Zufallszahlen können oft nicht angegeben werden. Viel schlimmer: Versuche können nicht wiederholt werden! Das ist deutlich mehr Zufall, als man gebrauchen kann! Forschungsergebnisse sollten unbedingt reproduzierbar sein, auch wenn man stochastische Simulationen durchführt! Dr. D. Steuer, Tel. 2819 75

Rein pragmatisch ist es fast unmöglich ein Programm zu debuggen, wenn man nicht an definierte Stellen im Ablauf springen kann. Konzeptionell verabschiedet man sich also von Konzept des echten Zufalls und gelangt zum Pseudozufall. Dr. D. Steuer, Tel. 2819 76

Pseudozufall Pseudozufall soll möglichst viele Eigenschaften von richtigen Zufallsgeneratoren bewahren, andererseits aber als deterministisches Programm implementierbar sein. Er muss also als eine Funktion programmierbar sein, die aus einer endlichen Anzahl von Parametern eine neue Zahl berechnen. x n+1 = f(x n,[x n 1,...],sonstige Parameter). Das historisch älteste Beispiel für einen solchen Algorithmus stammt von John von Neumann (1946), einem der Väter des Computers. Dr. D. Steuer, Tel. 2819 77

Sein Vorschlag war, eine große Integerzahl zu quadrieren, was die Anzahl der Stellen verdoppelt, und dann nur die jeweils mittleren Ziffern als nächste Zufallszahl zu behalten. Bsp: Ausgehend von 5772156649 gelangt man durch Quadrieren zu 33317792380594909201. Die nächste Zahl wäre dann 7923805949 usw. Stellt sich die Frage, inwiefern eine so deteriministisch erzeugte Zahlenfolge, bei der gilt x n+1 = f(x n ) zufällig sein kann. Tatsächlich ist sie natürlich nicht zufällig. Durch den Startwert und die Abbildungsvorschrift ist die Folge vollständig determiniert! Dr. D. Steuer, Tel. 2819 78

Aber: Für praktische Zwecke erscheint sie zufällig oder zumindest zufällig genug! Dieser konkrete Algorithmus von v. Neumann erwies sich als nicht besonders brauchbar. Es kann gezeigt werden, dass es zur Degeneration des Generators kommen kann, so dass kurze Zyklen auftreten. Frage: Können in einem Computer zyklenfreie Generatoren programmiert werden, die nur von einem Vorgängerwert abhängen? Für manche (große) Startwerte funktioniert das Verfahren aber oft gut. John von Neumanns ad hoc Ansatz entspricht nicht dem Wissen, dass heute vorhanden ist, um gute Generatoren zu programmieren. Dr. D. Steuer, Tel. 2819 79

Algorithmische Erzeugung gleichverteilter Zufallszahlen Da man, wie später gezeigt wird, aus gleichverteilten Zufallszahlen beliebig verteilte Zufallszahlen erzeugen kann, beschränken wir uns zunächst auf diese. Da Berechnungen mit ganzen Zahlen exakt in Computern durchzuführen sind, spezialisieren wir uns weiter auf die Erzeugung von gleichverteilten Zufallszahlen auf der Folge von ganzen Zahlen 0,...,m. Der Übergang zu stetig gleichverteilten Zufallszahlen gelingt dann durch einfache Division durch m. Sei X eine Zz gemäß der Gleichverteilung auf 0,...,m, so ist U = X/m eine Zz (ungefähr) gemäß der Gleichverteilung auf [0,1]. Dr. D. Steuer, Tel. 2819 80

Haken: Das ist natürlich eine Idealisierung! X/m liegt auf einem Gitter mit Gitterweite 1/m! Die Grenze m sollte deshalb hinreichend groß sein! Oft wird m als die größte in der jeweiligen Computersprache darstellbare, ganze Zahl gewählt. Dr. D. Steuer, Tel. 2819 81

Minimalexkurs: Der Restklassenkörper Z m. Sei m eine ganze Zahl. Dann ist Z m die mathematische Struktur, wenn man alle Additionen und Multiplikationen der Zahlen 0,...,m 1 betrachtet und alle Ergebnisse modulo m berechnet. Bsp: 4*5 mod 6 = 2 oder 3+3 mod 6 = 0. Es existiert eine reichhaltige mathematische Theorie zu diesen sogenannten Restklassenkörpern. Hier ist nur interessant, dass man auf allen Rechenergebnissen eine modulo-operation durchführt, um die Menge 0,...,m 1 nicht zu verlassen, sowie die Existenz inverser Elemente bzgl. Addition und Multiplikation in Z m. Dr. D. Steuer, Tel. 2819 82

Lineare Kongruenzgeneratoren Die heute gebräuchlichen (Pseudo-)Zufallsgeneratoren stammen alle von der Klasse der sogenannten linearen Kongruenzgeneratoren (LKG) ab. Ein linearer Kongruenzgenerator wird durch vier Zahlen vollständig bestimmt. m, die größte Zahl bzw. der Restklassenkörper; 0 < m, a, ein Multiplikator; 0 a < m, c, ein Inkrement; 0 c < m, X 0, ein Startwert (oder seed); 0 X 0 < m. Der Generator erzeugt dann einen Strom von Zzen gemäß der Abbildung X n+1 = (ax n +c) mod m,n > 0. Dr. D. Steuer, Tel. 2819 83

Bsp: setzt man m = 10, X 0 = a = c = 7 dann ergeben sich die nächsten Werte zu 7,6,9,0,7,6,9,0... Schon dieses Beispiel zeigt, dass nicht alle so erzeugten Folgen zufällig wirken! Stattdessen erkennt man hier, dass eine Periodenlänge des Generators von 4 vorliegt! Dr. D. Steuer, Tel. 2819 84

Aufgabe: Linearer Kongruenzgenerator in R Erstellen Sie (jetzt!) eine Funktion lnkong(), die aus m, a, X n und c eine neue (Pseudo-)Zufallszahl gemäß obiger Beschreibung erzeugt. Überlegen Sie zunächst, wie ein einzelner Schritt in R formuliert werden müsste, verallgemeinern Sie dann zu einer Funktion! Dr. D. Steuer, Tel. 2819 85

Lösung: lnkng <- function ( a, m, c, xn) { (a*xn + c )%% m} Verallgemeinern Sie diese Funktion, so dass die Anzahl der zu berechnenden Zufallszahlen als Parameter übergeben werden kann! Dr. D. Steuer, Tel. 2819 86

Wahl der Parameter Wie gesehen, ist nicht jede Wahl der Parameter geschickt. Als entscheidend stellt sich die Kombination vom m und a heraus. Zunächst zur Wahl des Moduls m. Es ist leicht zu überlegen, dass selbst, wenn man nur 0 oder 1 wählen möchte, es nicht geschickt ist m = 2 zu setzen. Die zufälligste, mögliche Folge ist dann 0, 1, 0, 1... (Warum?) m sollte also groß gewählt werden! Dr. D. Steuer, Tel. 2819 87

Ein Kriterium für die Auswahl ist die Geschwindigkeit, mit der die modulo Operation für das gewählte m auf dem speziellen Rechner durchzuführen ist, die sogenannte Wortlänge. Eine aus technischer Sicht geschickte Wahl ist m = 2 w, wenn w die Anzahl von bits in der Darstellung einer Integerzahl im gewählten Rechner ist. Additionen werden in einer solchen Maschine automatisch modulo m ausgeführt, bei Multiplikationen nutzt man einfach die hintere Hälfte des Ergebnisses. Wegen der bekannten Eigenschaften von Z p, wenn man m als Primzahl wählt, bietet es sich auch an, m als größte Primzahl kleiner als 2 w zu wählen! Dr. D. Steuer, Tel. 2819 88

Generell sind Moduloberechnungen im Computer billig durchzuführen. Wenn schon Periodizitäten nicht vermeidbar sind, so ist es immerhin wünschenswert, wenn die Periodenlänge möglichst groß ist. Untersuchungen dazu führen zu Handreichungen, wie a geschickt zu gegebenen m zu wählen ist. Es kann folgendes Theorem bewiesen werden (Knuth, p. 17) Die linear-kongruente Sequenz, welche durch m, a, c und X 0 festgelegt wird, hat die maximale Periodenlänge m genau dann, wenn 1. c teilerfremd zu m ist, 2. a 1 = b eine Vielfaches jeder Primzahl p ist, die m teilt und 3. b ein Vielfaches von 4 ist, wenn m ein Vielfaches von 4 ist. Untersuchungen der Periodizitäten lassen erkennen, dass c = 0 ohne Schaden gewählt werden kann. Dr. D. Steuer, Tel. 2819 89

Aufgabe 4: Konstruieren Sie einige linearen Kongruenzgeneratoren(LKG) mit maximaler Periodenlänge. Nutzen Sie dazu die oben erstellte R Funktion und das vorstehende Theorem. Dr. D. Steuer, Tel. 2819 90