MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Erzeugung und Testen von Zufall

Kategorie.: Arbeitsblatt

Mathematik: Stochastik, Statistik

MuPAD.....: 3.0.0

Datum.....: 2002-01-17

Autoren...: Julia Falek <faflek@upb.de>

Funktionen: mod, plot, plot::Point2d, Color, 

________________________________________________________________________________

 

Selbstgemachter Zufall? 

Der lineare Kongruenzgenerator

 

Hier soll gezeigt werden, wie man selbst Zufall erzeugen kann und wie man erkennen kann,

ob die so erzeugten Zahlen auch wirklich zufällig aussehen. Hier möge man sich an die wichtige

gen der Kryptographie erinnern.  

 

Wir definieren zunächst folgende Berechnungsvorschrift:

                                                          image                                                                   

Damit ist festgelegt, dass die erzeugten Zahlen nur zwischen 0 und n-1 liegen

können.

 

Wie zufällig die berechneten Zahlen aussehen, hängt von der Wahl der

Parameter ab. Wir definieren nun eine Prozedur, die uns eine Ausgabe der

Länge m eines linearen Kongruenzgenerators für beliebige Parameter a, b,

n und x0 berechnet.

 

LKG := proc(x0, a, b, n, m)

   local x, i;

begin

   x := [0 $ m];

   x[1] := x0;

   for i from 2 to m do

      x[i] := a * x[i-1] + b mod n;

   end_for;

   return(x);

end_proc:

 

Übergeben wir der Prozedur nun die Saat x0 = 1 und die Parameter a = 2,

b = 3, n = 13, so erhalten wir folgende Ausgabe.

 

LKG(1, 2, 3, 13, 30)

math

 

Wir können erkennen, dass die Folge zyklisch ist, d.h. nach jeweils 12

Zahlen wiederholen sich die Zahlen in gleicher Reihenfolge. Damit ist klar,

dass diese Wahl der Parameter nicht sehr glücklich war.

 

Schaut man kurz auf die ausgegebene Liste der Zahlen, so erkennt man

sofort, dass die Folge berechnet worden und keinesfalls zufällig ist. Ein

besseres Ergebnis erhält man bei Eingabe der folgenden Parameter:

 

LKG(143, 1896, 467, 1301, 30)

math

 

Diese Zahlenfolge sieht zufällig aus. Die so erzeugten Pseudozufalls-

zahlen zwischen 0 und 1300 werden nun zu Pseudozufallszahlen aus dem

Intervall [0, 1[ transformiert, indem wir jedes Listenelement durch 1301 teilen.

Wir wollen graphisch veranschaulichen, wie zufällig diese transformierten

Zahlen tatsächlich sind.

L := LKG(143, 1896, 467, 1301, 500):

Punkte := [0 $ 499]:

for i from 1 to 499 do

   Punkte[i] := plot::Point2d(L[i]/1301, L[i+1]/1301, Color = RGB::Black);

end_for:

plot(op(Punkte), Color = RGB::Black)

MuPAD graphics

Die Punkte scheinen ziemlich gleichverteilt im Einheitsquadrat zu liegen.

Wir nehmen daher an, dass der lineare Kongruenzgenerator mit obigen

Parametern ziemlich „guten" Zufall simuliert.

 

Zum Vergleich stellen wir auch den ersten Generator mit den Parametern

a = 2, b = 3 und n = 13  graphisch dar:

 

L := LKG(1,2,3,13,500):

Punkte := [0 $ 499]:

for i from 1 to 499 do

   Punkte[i] := plot::Point2d(L[i]/13, L[i+1]/13, Color = RGB::Black);

end_for:

plot(op(Punkte), Color = RGB::Black)

MuPAD graphics

 

Die Punkte liegen auf drei parallelen Geraden -- keine gute Wahl, denn

wer wird schon behaupten, dass diese Punkte zufällig sind.

_______________________________________________________________________________

 

Anmerkungen:

1.  Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe

     wird eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die

     Bücher können unter www.schule.mupad.de/literatur kostenfrei kopiert werden.

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.