Kapitel 3 Modulare Arithmetik Arithmetik ist das Teilgebiet der Mathematik, welches auch als Synonym zum Begriff Zahlentheorie verstanden werden kann. Elementare Arithmetik bezeichnet allgemein das Rechnen mit natürlichen Zahlen und ganzen Zahlen und die Untersuchung der Konsequenzen, die sich daraus ergeben, dass die Division in den ganzen Zahlen nur eingeschränkt möglich ist. Das Rechnen mit ganzen Zahlen ist an vielen Stellen der Mathematik und bei vielen Anwendungen von gros̈er Bedeutung. 3.1 Ganze Zahlen Die ganzen Zahlen (Z) und natürlichen Zahlen (N bzw. N0 := N\{0}) rufen wir ins Leben“ ” durch Es gibt Mengen N, Z , ein Element 0 ∈ Z, Abbildungen Z × Z ∋ (a, b) 7−→ a + b ∈ Z, Z × Z ∋ (a, b) 7−→ a · b ∈ Z, und eine Vergleichsoperation ≤ mit folgenden Eigenschaften: 1. (a + b) + c = a + (b + c) für alle a, b, c ∈ Z . 2. a + 0 = 0 + a für alle a ∈ Z . 3. Zu a ∈ Z gibt es genau ein (−a) ∈ Z mit (a + (−a)) = 0 = ((−a) + a) . 4. a + b = b + a für alle a, b ∈ Z . 5. (a · b) · c = a · (b · c) für alle a, b, c ∈ Z . 6. a · b = b · a für alle a, b ∈ Z . 7. a · (b + c) = a · b + a · c für alle a, b, c ∈ Z . 8. N ⊂ Z , 1 6= 0 , Z = N ∪ {0} ∪ −N . 9. 1 · a = a , 0 · a = 0 für alle a ∈ Z . 10. a ≤ b ⇐⇒ b + (−a) ∈ N ∪ {0} . (Addition) (Multiplikation) (Assoziativgesetz) (0 ist neutrales Element) ((−a) ist Negatives von a) (Kommutativgesetz) (Assoziativgesetz) (Kommutativgesetz) (Distributivgesetz) Zur Abkürzung führen wir noch die Subtraktion durch Z × Z ∋ (a, b) 7−→ a − b := a + (−b) ∈ Z ein, schreiben meist kurz ab für a · b und vereinbaren die Schreibweise a < b für a ≤ b, a 6= b . 25 (1 ist neutrales Element) Damit können wir nun in Z und N genauso rechnen, wie wir es gewohnt sind. Wo bleibt die Division in den ganzen Zahlen? Offenbar sind ±1 die einzigen Zahlen a in Z, für die 1/a, was wir meist als a−1 schreiben, in Z existiert. Wenn man für die anderen Fälle nicht den Weg zu den rationalen Zahlen weitergehen will, muss man eine Division mit Rest einführen, was eine Beschreibung der Tatsache gleichkommt, dass die Division ganzer Zahlen nicht aufgeht“. Zunächst zur Teilbarkeit. ” 3.2 Teilbarkeit Definition 3.2.1 Seien a, b ∈ Z. Wir sagen, dass a die Zahl b teilt, wenn es k ∈ Z gibt mit b = ka. Wir schreiben dafür a|b . Ist b nicht durch a teilbar, so schreiben wir a 6 | b. Srechweisen: Für a|b: a teilt b, b ist Teiler von a, a ist durch b teilbar. Für a 6 | b: a teilt b nicht, b ist kein Teiler von a, a ist nicht durch b teilbar. Bei Teilbarkeitsfragen in Z können wir uns in der Regel immer auf positive Teiler, d.h. auf Teiler in N, zurückziehen, da von den zwei Zahlen a, −a stets eine in N liegt, falls a 6= 0; der Fall a = 0 ist uninteressant, da dann auch b = 0 . Ohne Beweis führen wir an: Korollar 3.2.2 Seien a, b, c, d ∈ Z. Dann gilt: (1) a|a; a|b und b|a =⇒ a = ±b; a|b und b|c =⇒ a|c. (2) d|a und d|b =⇒ d|(ax + by) für alle x, y ∈ Z. (3) a|b und a|(b + c) =⇒ a|c. Fragt man nach gemeinsamen Teilern zweier ganzer Zahlen a, b, so interessiert insbesondere der größte dieser gemeinsamen Teiler. Dabei können wir uns dann auf positive Teiler beschränken, denn 1 ist stets ein gemeinsamer Teiler von a und b. Definition 3.2.3 Seien a, b ∈ Z, die nicht beide 0 sind. Eine Zahl d ∈ N heißt größter gemeinsamer Teiler von a, b genau dann, wenn (1) d|a , d|b (2) Ist d′ ∈ N ein Teiler von a und b, so teilt d′ auch d gilt. Wir schreiben d = ggT (a, b) = a ⊓ b . Der größte gemeinsame Teiler d gemäß Definition 3.2.3 ist eindeutig bestimmt dank der Tatsache, dass wir d ∈ N gefordert haben. Es sollte klar sein, wie nun der größte gemeinsame Teiler von endlich vielen ganzen Zahlen erklärt ist. Beispiel: 6 ⊓ 10 = 2, 6 ⊓ 10 ⊓ 30 = 2, 6 ⊓ 10 ⊓ 15 = (6 ⊓ 10) ⊓ 15 = 6 ⊓ (10 ⊓ 15) = 1 . 3.3 Primzahlen Seit Euklid kennen wir die Primzahlen, die Tatsache, dass es unendlich viele Primzahlen gibt und auch die Aussage, dass eine natürliche Zahl, bis auf die Reihenfolge, eindeutig in ein Produkt von Primzahlen zerlegt werden kann. Diese Zerlegung nennt man Primfaktorzerlegung und das Aufsuchen dieser Zerlegung eine Faktorisierung. Die obige Definition des größten gemeinsamen Teilers hätten wir – wie dies in der Schule meist geschieht – auch auf die Primfaktorzerlegung stützen können. Hier ist der Beweis für die Tatsache, dass es unendlich viele Primzahlen gibt. Satz 3.3.1 (Unendlichkeit der Primzahlen/Euklid) Es gibt unendlich viele Primzahlen. Beweis: Annahme: Es gibt nur endlich viele Primzahlen. Seien p1 , . . . , pr diese Primzahlen. Setze N := p1 · · · pr + 1. Dann ist N ∈ N und N ≥ 2. Da N > pi für jedes i = 1, . . . , r ist, ist N keine Primzahl. Also ist N zerlegbar: N = kp, p, k ∈ N mit 1 < p < N . O.E. kann man nun annehmen, dass p eine Primzahl ist; sonst zerlege erneut. Also kommt p unter p1 , . . . , pr vor; o.E. p = p1 . Dann folgt: 1 = p(k − p2 . . . pr ) . Daraus liest man nun p = 1 ab, was ein Widerspruch ist. Das kleinste gemeinsame Vielfache von Zahlen a, b ∈ N ist die kleinste Zahl m ∈ N, für die a|m , b|m gilt. Kennt man die Primfaktorzerlegung von a und b, so kann man es sehr einfach ablesen(, wie übrigens auch den größten gemeinsamen Teiler). 3.4 Division mit Rest Der Division mit Rest, die wir nun vorstellen wollen, tritt uns im Alltag entgegen bei der Umrechnung von Tageszeiten in unterschiedliche Zeitskalen (Minuten, Sekunden,. . . ), bei der berechnung von Wochentage im Kalender, . . . . Satz 3.4.1 (Division mit Rest) Für alle a ∈ Z, b ∈ N gibt es eindeutig bestimmte Zahlen q, r ∈ Z mit a = bq + r und 0 ≤ r < b. Beweis: Wir beweisen zunächst die Existenz von q, r für a ≥ 0 durch vollständige Induktion: a = 0 : Setze q := r := 0 . a + 1 : Ist a + 1 < b, so gilt a + 1 = 0b + (a + 1) und wir sind fertig. Ist a + 1 ≥ b, so folgt aus der Induktionsvoraussetzung a + 1 − b = qb + r mit q ∈ Z, 0 ≤ r < b. Also a + 1 = (q + 1)b + r. Die Existenz folgt für a < 0 aus der Anwendung der eben bewiesenen Aussage auf −a gemäß −a = q ′ b + r ′ , 0 ≤ r ′ < b durch a= (−q ′ − 1)b + (b − r ′ ) , falls r ′ 6= 0 (−q ′ )b , falls r ′ = 0 Um die Eindeutigkeit zu beweisen, nehmen wir ein zweites Zahlenpaar q ′ , r ′ mit a = q′b + r′, 0 ≤ r′ < b , wobei o. E. r ≥ r ′ sei. Dann ist 0 ≤ r − r ′ < b, r − r ′ = −(q − q ′ )b, q − q ′ ≥ 0, und dies ist nur mit q ′ = q, r = r ′ verträglich. Lemma 3.4.2 Sei a ∈ Z und b ∈ N. Dann folgt aus der Darstellung a = qb + r , q ∈ Z, die Aussage a ⊓ b = b ⊓ r. Beweis: Ist d ein Teiler von a, b, dann ist d ein Teiler von b und r und umgekehrt (siehe Folgerung 3.2.2). 3.5 Modulares Rechnen Die modulare Arithmetik geht auf Gauß zurück. Sie beschreibt das Rechnen mit Resten: man gibt sich eine natürliche Zahl m vor und ersetzt jede ganze Zahl a durch ihren Rest r, der bei Division von a durch m entsteht; siehe Satz 3.4.1. Die Zahlen a, die bei Division mit Rest den gleichen Rest ergeben, fasst man zu einer Klasse, den Restklassen zusammen. Wir kennen eine solche Vorgehensweise aus dem Alltag z.B. bei der Umrechnung von Uhrzeiten (12 StundenHalbtage, 24-Stunden-Tage). Die Restklassen sind nun so definiert: Zm := {[0], [1], . . . , [m − 1]} wobei [i] := {z ∈ Z|z = qm + i für ein q ∈ Z} , Dass die Menge Zm m Elemente hat, ergibt sich aus der Tatsache, dass m Reste gemäß Satz 3.4.1 auftreten können. Beachte, dass etwa die Klasse [1] auch als die Klasse [m + 1] beschrieben werden kann: wir haben in der Definition von Zm ein naheliegendes Representantensystem“ ” gewählt. Beispiel 3.5.1 Für m = 11 haben wir [3] = [25] = [−8] = [91] . Für m = 2 erhalten wir gerade die Einteilung der natürlichen Zahlen in die Klassen gerade Zahlen ([0]) und ungerade Zahlen ([1]). Für diese Klassen hat man in natürlicher Weise eine Addition und eine Multiplikation: gerade + gerade = gerade , ungerade + gerade = ungerade gerade · gerade = gerade , ungerade · gerade = gerade Die Beobachtung aus Beispiel 3.5.1 bezüglich Addition, Multiplikation schreiben wir nun fort auf Zm : Addition: [i] + [j] := [i + j] , i, j ∈ {0, 1, . . . , m − 1} ; Multiplikation: [i] · [j] := [ij] , i, j ∈ {0, 1, . . . , m − 1} . Damit dies wohldefiniert ist, muss noch gezeigt werden: aus [i] = [j], [i′ ] = [j ′ ] folgt [i+j] = [i′ +j ′ ] und [ij] = [i′ j ′ ] . Wir beweisen dies am Beispiel der Multiplikation. [i] = [j], [i′ ] = [j ′ ] bedeutet i′ = pm + i, j ′ = qm + j für p, q ∈ Z . Daraus folgt i′ j ′ = (pm + i)(qm + j) = (iqm + jpm + pqm)m + ij also [ij] = [i′ j ′ ] . [0] ist das neutrale Element für die Addition, [1] ist das neutrale Element für die Multiplikation: [i] + [0] := [i] , [i] · [1] = [i] , i, j ∈ {0, 1, . . . , m − 1} . Weiterhin ist leicht zu sehen, dass [m − i] das Inverse von [i] bezüglich der Addition ist: [m − i] + [i] = [(m − i) + i] = [0] . Zusammenfassung: Zm ist bezüglich der Addition eine kommutative Gruppe. Dieses Ergebnis gilt unabhängig von m. Für die Multiplikation ist die Situation nicht so einfach, denn es gibt die Situation, dass Nullteiler auftreten; etwa [2] · [2] = [2 · 2] = [0] in Zm für m = 4 . Also kann hier [2] kein Inverses bezüglich der Multiplikation haben. Ist m eine Primzahl, dann ist, wie wir wissen, die Klasse [1] ein neutrales Element und aus dem Lemma von Bezout 8.4.1 folgern wir, dass es zu jeder Zahl k = 1, . . . , m − 1 ein l ∈ N gibt mit m teilt kl − 1; d.h. [k] · [l] = [1] . Somit hat man für jedes Element in Zm \{[0]} ein Inverses. Zusammenfassung: Zm \{[0]} ist bezüglich der Multiplikation eine kommutative Gruppe, falls m eine Primzahl ist. Die Gruppentafeln – so bezeichnen wir eine vollständige Auflistung der Verknüpfungen der Gruppenelemente – zu m = 5 sehen wie in 3.1 aufgeführt aus. + [0] [1] [2] [3] [4] [0] [0] [1] [2] [3] [4] · [1] [2] [3] [4] [1] [1] [2] [3] [4] [0] [1] [1] [2] [3] [4] [2] [2] [3] [4] [0] [1] [2] [2] [4] [1] [3] [3] [3] [4] [0] [1] [2] [3] [3] [1] [4] [2] [4] [4] [0] [1] [2] [3] [4] [4] [3] [2] [1] (b) (a) Abbildung 3.1: Gruppentafeln zu Z5 Man beachte, dass sowohl in der Gruppentafel zur Addition als auch in der Gruppentafel zur Multiplikation in jeder Zeile und Spalte jede Klasse genau einmal vertreten ist. Beachte ferner, dass die Potenzen des Elements [2] alle Elemente von Z∗5 := Z5 \{[0]} durchlaufen: [2]0 = [1] , [2]1 = [2] , [2]2 = [4] , [2]3 = [3] , [2]4 = [1] . Man nennt eine Gruppe, die ein solches zyklisches Element besitzt, eine zyklische Gruppe. Die Berechnung von Potenzen modulo eines Moduls p bedeutet: Berechne für ein n ∈ N und a ∈ Z an mod p . Dies kann mit der Idee von Teile und herrsche“ realisiert werden, was man an ” ( (an/2 mod p)2 mod p , falls n gerade an mod p := n−1 (a mod p) · a mod p , falls n ungerade ablesen kann. Kommen wir nochmals auf die Inversenbildung in Zm zurück. Überraschenderweise ist es nun so, dass im Gegensatz zu Z, wo nur ±1 Inverse in Z besitzen, in Zm die Inversenbildung häufiger gelingt. Z.B. hat [3] in Z4 ein Inverses, nämlich [3], denn [3] · [3] = [1] . Wiederum klärt hier das Lemma von Bezout 8.4.1 die Lage: ein Elemente k in Zm hat genau dann ein Inverses, wenn k, m teilerfremd sind. Wir führen noch eine andere Schreibweise ein. Mit u, v ∈ Z schreiben wir: u≡v mod m : ⇐⇒ [u] = [v] ⇐⇒ m|(u − v) . Beispiel 3.5.2 Wie sehen die beiden letzten Dezimalstellen von 242008 aus? Dies ist die Frage nach dem Rest von 242008 modulo 100 . Wir rechnen induktiv nach: 24k ≡ (−1)k+1 · 24 mod 100 , k = 1, 2, . . . . Induktionsbegin k = 1: Klar Induktionsschluss k → k + 1: 24k+1 ≡ (24k · 24) ≡ (−1)k+1 · 24 · 24 ≡ (−1)k+2 · 24 mod 100 Daraus folgt also 242008 ≡ −24 mod 100 ≡ 76 mod 100 , was bedeutet, dass die Zahl 22008 mit 76 endet. Beispiel 3.5.3 Jede Zahl 10k hat wegen 10k = 9 · 10k − 1 + 1 = 9 · (10k−1 + · · · + 100 ) + 1 10 − 1 den Rest 1 modulo 9. Die hat die Konsequenz, dass jede Dezimalzahl z = an an−1 · · · a0 = an 10n + an−1 10n−1 + · · · a0 100 modulo 9 den Rest an +· · ·+a0 hat. Dies ist die so genannte Quersummenprobe auf Teilbarkeit durch Neun: eine Zahl z hat bei Teilung genaz dann den Rest r, wenn ihre Quersumme den Rest r hat. Daraus resultiert die Neunerprobe, eine Methode, die es gestattet, den Nachweis einer fehlerhaften Addition, Subtraktion oder Multiplikation ohne lange Rechenoperationen zu erbringen: man berechnet die Neunerreste der beiden Operanden und des Ergebnisses, was man durch sukzessives Bilden von Quersummen tun kann. Hier ist ein Beispiel für die Anwendung. Ist die Behauptung 40752 · 32111 = 1308587572 richtig? Nein, denn die Neunerreste erfüllen die Gleichung nicht: Neunerrest von 40752 ist 0, denn: 4 + 0 + 7 + 5 + 2 = 18, 1 + 8 = 9 Neunerrest von 32111 ist 8, denn: 3 + 2 + 1 + 1 + 1 = 8 Neunerrest von 1308587572 ist 1, denn: 1 + 3 + 0 + 8 + 5 + 8 + 7 + 5 + 7 + 2 = 46, 4 + 6 = 10, 1 + 0 = 1 Beachte, eine umgekehrte Anwendung ist nicht erlaubt: wenn die Neunerprobe keinen Widerspruch aufweist, muss das Ergebnis nicht korrekt sein. Kombiniert man die Neunerprobe etwa mit der Elferprobe – wir gehen hier nicht darauf ein – dann erhält man aus der Korrektheit der Proben schon eine ziemliche Sicherheit für die Korrektheit der Rechnung. Modulares Rechnen wird für Berechnungen mit dem Computer wichtig, wenn mit sehr großen ganzen Zahlen exakt gerechnet werden soll. Sei a ∈ N . Man wählt verschiedene Moduln m1 , . . . , ml und berechnet die Reste r1 , . . . , rl von a bezüglich dieser Moduln. Der Rest r von a bezüglich des Moduls m := m1 · · · ml ist dann gleich r1 · · · rl und er legt a eindeutig fest, wenn a zwischen 0 und m − 1 liegt. Ist a ≥ m, dann liegt a immerhin noch in der Restklasse [r] bezüglich des Moduls m . Der folgende Chinesischer Restsatz“ 1 klärt die Frage, welche Voraussetzungen erfüllt sein ” müssen, dass das obige Vorgehen zum richtigen Ergebnis führt. 1 Dieser Satz geht auf den chinesischen Mathematiker Sun Tsü (um etwa 300 v.Chr.) zurück. Satz 3.5.4 (Chinesischer Restsatz) Seien r1 , . . . , rl ∈ Z und m1 , . . . , ml ∈ N\{1} . Es gelte: 1 = ggT(mi , mj ) für alle i, j = 1, . . . , l, i 6= j . (3.1) Dann besitzt das Kongruenzen-System x ≡ ri mod mi , i = 1, . . . , l eine Lösung x ∈ Z und alle Lösungen y sind gegeben als y = x + km1 · · · ml , k ∈ Z . Beweis: Es ist einfach einzusehen, dass, eine Lösung x vorausgesetzt, alle Lösungen so aussehen, wie behauptet. Der Beweis zur Existenz von x wird mit Hilfe des Lemmas von Bezout geführt, welches im nächsten Kapitel mit Hilfe des euklidischen Algorithmus hergeleitet wird; siehe Satz 8.4.1. Sei m := m1 · · · ml . Nach Voraussetzung sind mi und Mi := m/mi teilerfremd. Mit Hilfe des euklidischen Algorithmus in der Form, wie er das Lemma von Bezout beweist, finden wir also Zahlen Zahlen si , ti ∈ Z mit si mi + ti Mi = 1 , i = 1, . . . , l . Wir setzen nun ei := ti Mi , i = 1, . . . , l , und rechnen ohne Mühe nach, dass ( 1 mod mj , falls i = j ei ≡ , i, j = 1, . . . , l 0 mod mj , falls i 6= j gilt. Also ist die Zahl x := l X ri ei (3.2) i=1 eine Lösung. Beispiel 3.5.5 Betrachte die Multiplikation der Zahlen 102, 99: 102 · 99 =????? . Wir wählen (geschickt) die Moduln m1 = 9, m2 = 10, m3 = 11 und erhalten folgende Reste für das Produkt: 102 · 99 ≡ (99 + 3) · (99 + 0) ≡ 3 · 0 ≡ 0 mod 9 ; 102 · 99 ≡ (100 + 2) · (100 − 1) ≡ 2 · (−1) ≡ −2 mod 10 ; 102 · 99 ≡ (99 + 3) · (99 + 0) ≡ 3 · 0 ≡ 0 mod 11 . Wir haben m := m1 m2 m3 = 990 . Da r1 = r3 = 0 ist, haben wir nur e2 zu bestimmen. Offenbar gilt 10 · 10 + (−1) · 99 = 1 . Also ist e2 = −99 und wir erhalten eine Lösung x = (−2) · (−99) = 198 . Aus einer Größenordnungsbetrachtung folgt: 102 · 99 = 198 + 10 · 990 . Die Voraussetzung (3.1) kann nicht weggelassen werden, wie folgendes Beispiel zeigt. gesucht ist eine zahl x ∈ Z mit x ≡ 1 mod 15, x ≡ 2 mod 21 . Da 3 ein Teiler von 15 und 21 ist, gilt auch x ≡ 1 mod 3, x ≡ 2 mod 3 . Dies ist aber ein Widerspruch, da kein x modulo 3 den Rest 1 und den Rest 2 haben kann. Die Lösung x in Satz 3.5.4 kann eindeutig gemacht werden durch die Forderung 0 ≤ x < m . 3.6 Anhang: Pseudozufallszahlen Um die umständliche Verwendung von Tabellen zu vermeiden, werden Folgen von Zufallszahlen verwendet, die im Allgemeinen durch Iterationen hergestellt werden; wir sprechen von Pseudozufallszahlen. Darunter versteht man mathematisch wohldefinierte Zahlenfolgen, die als Folgen von Zufallszahlen angesehen werden sollen. Diese Zufallszahlen haben den Vorteil, dass sie reproduzierbar sind, und haben den Nachteil, dass sie deterministischen Charakter besitzen. Alles, was wir hier zur Sprechweise Zufallszahl“ sagen können, ist, dass jedenfalls kein Muster, keine ” Struktur in der Folge erkennbar sein soll. Die Wahrscheinlichkeitstheorie und Statistik stellt Hilfsmittel bereit, solche Folgen auf ihre Zufälligkeit zu testen. Zunächst einige allgemeine Bemerkungen. Sei M eine endliche Menge. Pseudozufallszahlen, deren Konstruktionsmethode wir hier besprechen wollen, ergeben sich als Iterierte einer Funktion f : M −→ M in folgender Weise: xn+1 := f (xn ) , n ∈ N0 . (3.3) Der Startwert x0 heißt Samen der Pseudozufallsfolge (xn )n∈N die Folge selbst heißt auch Orbit und die Funktion f heißt der Generator. Die Folge ist durch die Wahl von f und x0 vollständig bestimmt; es handelt sich also um keine echte Zufallsfolge. Durch geschickte Wahl von f – gewünscht wird eine gute Durchmischung von M – kann man jedoch erreichen, dass sich die Folge für viele Anwendungen wie eine Zufallsfolge verhält. Da die Menge M endlich ist, können nicht alle Folgenglieder xn verschieden sein. Es gibt also Indizes k, l mit xk = xl ; o. E. k > l . Seien k, l die ersten Indizes, für die dies eintritt. Sei damit r := k − l . Da xk = xl gilt, folgt xn+r = xn für alle n ≥ l . Also wird der Orbit (xn )n∈N periodisch mit Periode r ; wir haben einen Zyklus der Länge r . Verlangt man, dass jedes Element der Menge M die Chance hat im Orbit aufzutauchen, muss der Zyklus ganz M umfassen. Daraus folgt, dass die Abbildung f surjektiv sein muss. Da M endlich ist, hat f also sogar bijektiv zu sein. Wir werden unten sehen, dass die Bijektivität keineswegs dafür schon ausreicht, ein guter Generator zu sein. Die Pseudozufallszahlengeneratoren, die wir hier besprechen wollen, sind ausschließlich affine Generatoren; also M := Zm ; f : Zm ∋ [x] 7−→ ([ax] + [b]) ∈ Zm , (3.4) mit einem Modul m . Hier sind a, b ∈ Z . Damit lautet die Rechenvorschrift für den Kongruenz–Generator M := {0, . . . , m − 1} ; f : M ∋ x 7−→ ax + b mod m ∈ M . (3.5) Wir bezeichnen (3.4) auch als Kongruenz–Generator, denn Rechnen in Kongruenzen ist nichts anderes als das Rechnen in Restklassen. Bemerkung 3.6.1 Durch die Generatoren in (3.4) werden Zufallszahlen in M := {0, 1, . . . , m− 1} erzeugt. Aus einer Zufallszahl y ∈ {0, . . . , m − 1} ergibt sich eine Zufallszahl z in [0, 1] ganz y einfach so: z := m . Damit die Abbildung f aus (3.4) bijektiv wird, muss a ein invertierbares Element in Zm sein, d.h. a muss zu m teilerfremd sein. Für die Klärung der Frage, unter welchen Bedingungen dieser Typ von Generatoren einen Zyklus maximaler Länge erzeugt, schauen wir uns Beispiele an. Beispiel 3.6.2 Betrachte die spezielle Wahl m = 10, a = b = 7 . Hier ist der erzeugte Zyklus 7, 6, 9, 0, 7, 6, 9, 0, . . . ziemlich kurz, obwohl natürlich a = 7 ein invertierbares Element in Z10 ist. Beispiel 3.6.3 Betrachte die spezielle Wahl m = 231 , a = 65539, b = 0 . Dies ist der Zufallsgenerator RANDU, wie er von IBM in den Computern in den 60er Jahren verwendet wurde. Die maximal erreichbare Zykluslänge r ist hier nicht ganz maximal, aber mit r = 229 nahezu maximal. Satz 3.6.4 Mit m, a, b ∈ Z, m ≥ 2 betrachte die Abbildung f : {0, . . . , m − 1} ∋ x 7−→ ax + b mod m ∈ {0, . . . , m − 1} . (3.6) Für beliebiges x0 ∈ {0, . . . , m − 1} sei die Folge (xn )n∈N definiert durch xn+1 := f (xn ) , n ∈ N 0 . Genau dann ist diese Folge periodisch mit der maximalen Periodenlänge m, wenn folgende Bedingungen erfüllt sind: a) p|(a − 1) für alle Primteiler p von m ; b) 4|(a − 1) falls 4|m ; c) b und m sind teilerfremd. Satz 3.6.4 nen nt uns die Bedingungen für einen affinen Kongruenz–Generator, damit er der Minimalforderung, einen Zyklus maximaler Länge zu erzeugen, genügt. Jedoch garantieren diese Bedingungen noch lange keinen guten Zufallsgenerator, wie nachfolgendes Beispiel zeigt. Beispiel 3.6.5 Betrachte für einen beliebigen Modul m den Generator f (x) :≡ x + 1 mod m . Kein Zweifel, die Zykluslänge ist maximal, nämlich m, aber die erzeugte Folge 0, 1, 2, . . . , m − 1, 0, 1 . . . kann sicherlich nicht den Anspruch einer Zufallsfolge erheben. In der Praxis wird häufig ein Modul der Form m = 2k verwendet (und dazu in der Regel der √ √ Multiplikator a im Bereich m < a < m − m). In diesem Fall bedeuten die Bedingungen des Satzes 3.6.4 einfach a ≡ 1 mod 4 und b ungerade . (3.7) Im Beispiel 3.6.3 sind diese Bedingungen offenbar verletzt (a = 216 + 3 und b = 0) und Konsequenz ist ein verkürzter maximaler Zyklus. Beispiel 3.6.6 In der Programmiersprache C++ gibt es einen Generator namens drand48: Modul = 248 , a = 25214903917 , b = 11 . Die Zykluslänge ist maximal, da die Bedingungen (3.7) erfült sind. Beispiel 3.6.7 Von D. Knuth wurde der Generator Modul = 216 , a = 137 , b = 187 vorgeschlagen. Die Zykluslänge ist maximal, da die Bedingungen (3.7) erfüllt sind. Beispiel 3.6.8 Ein weiterer Generator: Modul = 216 , a = 193 , b = 73 . Die Zykluslänge ist maximal, da die Bedingungen (3.7) erfüllt sind. Wie soll man nun gute und weniger gute Generatoren auseinanderhalten? Es liegt nahe, Paare, Trippel,. . . von Zufallszahlen zu betrachten und deren geometrische Verteilung zu untersuchen. Wir skalieren“ dazu die Zufallszahlen mit Modul m gemäß ” X i := xi ∈ [0, 1] , i ∈ N0 . m Vergleichen wir die geometrische Verteilung der Paare (X i+1 , X i ) in [0, 1]×[0, 1] für die Generatoren aus Beispiel 3.6.7 und Beispiel 3.6.8. Man kann Geraden entdecken, worauf alle Zufallszahlen liegen, 21 im ersten Fall, 8 im zweiten Fall; die Streifen dazwischen sind frei von den erzeugten Zufallspaaren. Der maximale Abstand von solchen Streifen ist bei beiden Generatoren dement1 bei Beispiel 3.6.7, √132 bei Beispiel 3.6.8. Dies bedeutet, sprechend ziemlich verschieden: √274 dass der Generator 3.6.7 größeres Vertrauen genießen sollte. Betrachtet man für den Generator 3.6.3 Tripel (X i+2 , X i+1 , X i ) in [0, 1] × [0, 1] × [0, 1], so stellt 1 haben. man fest, dass diese Tripel auf genau 15 Ebenen liegen, die jeweils einen Abstand √118 Neben der mangelnden Maximalität der Zykluslänge ein weiterer Nachteil dieses Generators. 3.7 Übungen 1.) Suche die Lösung(en) x der Kongruenz 33x ≡ 88 mod 319 . 2.) Löse die Kongruenz x ≡ 1 mod 2 , x ≡ 2 mod 3 , x ≡ 4 mod 5 . 3.) Ein Kartenspiel mit 56 Karten wird in Zeilen und 8 Spalten ausgelegt. Dann wird ein Zuschauer gebeten sich eine Karte zu merken und die Spalte j zu benennen, in der sie liegt. Anschließend wird das Kartenspiel so eingesammelt, dass die Reihenfolge wie vor der ersten Auslegung entsteht. Nun wird das Spiel erneut ausgelegt, und zwar in 8 Zeilen und 7 Spalten. Der Zuschauer benennt nun erneut die Spalte k, in der seine gemerkte Karte liegt. Welche Karte hat sich der Zuschauer gemerkt, wenn j = 4, k = 2 angegeben wurde. 4.) Löse die Kongruenzen x ≡ 1 mod 2 , x ≡ 1 mod 3 , x ≡ 1 mod 4 , x ≡ 1 mod 5 , x ≡ 0 mod 7 . 5.) Bestimme ganze Zahlen x, y, z mit 252x + 420y + 315z = 42 . 6.) Seien p, q ∈ N mit ggT(p, q) = 1 . Zeige: Gilt x ≡ a mod p und x ≡ a mod q, so gilt x ≡ a mod pq .