Modulare Arithmetik

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