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.