Der lineare Kongruenzgenerator

Werbung
Der lineare Kongruenzgenerator
In der Mathematik werden vor allem Kongruenzgeneratoren verwendet um Zufallszahlen zu
erzeugen. Im folgenden Übungszettel wollen wir den linearen Kongruenzgenerator näher
betrachten. Doch zuvor benötigen wir noch ein wenig mathematisches Vorwissen.
1. Rechnen mit modulo
Definition
Bei der Division einer natürlichen Zahl durch eine andere natürliche Zahl 𝑚 (größer als 1)
ergibt sich stets ein Rest aus der Menge 𝑅 𝑚 = {0,1,2,3, … , 𝑚 − 1}.
Die Zahl 𝑚 heißt in diesem Zusammenhang der Modul und die Menge 𝑅 𝑚 heißt die
Menge der Restklassen modulo 𝑚.
Übung
Öffne https://tube.geogebra.org/material/simple/id/27832 und lies die Erklärung durch.
Lass dir eine neue Aufgabe erzeugen, löse diese und kontrolliere sie mithilfe der Modulo3Uhr.
Addition und Multiplikation zweier Zahlen
Nach der Rechenoperation wird das Ergebnis durch den Modul 𝑚 dividiert und der Rest als
Endergebnis genommen.
Beispiel: Rechnen modulo 5
Da wir nun modulo 5 rechnen, haben wir nun die Zahlen 0,1,2,3 und 4 zur Verfügung. Wir
wollen nun das Ergebnis von 6+3 modulo 5 berechnen:
Der erste Schritt ist einfach, 6+3=9.
Nun müssen wir dieses Ergebnis jedoch noch durch 5 dividieren und den Rest aufschreiben.
9 hat bei Division durch 5 den Rest 4, also gilt 6+3=4.
Diese Schreibweise kann sehr verwirrend sein, deshalb ist es in der Mathematik üblich dies
auf folgende Weise aufzuschreiben:
6 + 3 = 9 ≡ 4 𝑚𝑜𝑑 5.
Analog funktioniert dies für eine Multiplikation:
6 ∗ 2 = 12 ≡ 2 𝑚𝑜𝑑 5.
Übung
Wir wählen den Modul m = 16. Berechne (jeweils mod 16):
6+3=
4+9=
23 + 12 =
7 + 21 =
15 + 3 =
12 ∗ 3 =
2∗3=
5∗2=
12 ∗ 4 =
7∗8=
2. Ein linearer Kongruenzgenerator
Definition
Ein linearer Kongruenzgenerator ist definiert durch einen Modul 𝑚, zwei Zahlen 𝑎, 𝑏 aus
𝑅(𝑚) und aus einer Startzahl 𝑥0 die ebenfalls aus 𝑅(𝑚) ist. Die Zahlenfolge 𝑥1 , 𝑥2 , ... lässt
sich dann folgendermaßen berechnen:
𝑥1 ≔ 𝑎𝑥0 + 𝑏 𝑚𝑜𝑑 𝑚
𝑥2 ≔ 𝑎𝑥1 + 𝑏 𝑚𝑜𝑑 𝑚
und allgemein (𝑖 > 0)
𝑥𝑖 ≔ 𝑎𝑥𝑖−1 + 𝑏 𝑚𝑜𝑑 𝑚
Beispiel: linearer Kongruenzgenerator mit m= 5, a=2, b=1, 𝑥0 =1
𝑥0 = 1
𝑥1 ≔ 2 ∗ 1 + 1 ≡ 3 𝑚𝑜𝑑 5
𝑥2 ≔ 2 ∗ 3 + 1 ≡ 2 𝑚𝑜𝑑 5
𝑥3 ≔ 2 ∗ 2 + 1 ≡ 0 𝑚𝑜𝑑 5
𝑥4 ≔ 2 ∗ 0 + 1 ≡ 1 𝑚𝑜𝑑 5
𝑥5 ≔ 3 ∗ 9 + 1 ≡ 3 𝑚𝑜𝑑 5
𝑥6 ≔ 3 ∗ 12 + 1 ≡ 2 𝑚𝑜𝑑 5
Mit diesem linearen Kongruenzgenerator kann man nun einen Münzwurf simulieren. Zum
Beispiel kann man Kopf als ungerade Zahl bzw. Zahl als gerade Zahl definieren. Dadurch
würde man folgende Zufallsfolge erhalten:
K,K,Z,K,K,Z,...
Diese Folge ist natürlich sehr vorhersagbar.
Übungen
1. Gegeben ist ein linearer Kongruenzgenerator mit m=16, a=3, b=2, x0 =3. Berechne
alle Folgenglieder bis du den Startwert wieder erreichst.
2. Entwirf einen linearen Kongruenzgenerator, der den Wurf einer Münze simuliert.
3. Entwickle einen möglichst guten linearen Kongruenzgenerator (durch Veränderung
der Parameter m, a und b) und teste die Güte mittels der dir bekannten
Testverfahren.
Herunterladen