|
C-KURS WS 01/02 - Übungen6 - Ergänzungen zur VorlesungAUTHOR: Gerd Döben-Henisch DATE OF FIRST GENERATION: Nov-5, 2001 DATE OF LAST CHANGE: Nov-5, 2001 EMAIL: Gerd Döben-Henisch |
In
Ergänzung zur Vorlesung soll hier gezeigt werden, wie man
sich in C Zufallszahlengeneratoren bauen kann. Gleichzeitig wird
ein einfaches Testverfahren mitgeliefert, das eine relative
Bewertung der Leistung dieser Zufallsgeneratoren erlaubt. |
Zufallszahlengenerator random1.c In der Standardbibliothek (siehe stdlib.h) wird in ISO-C eine Zufallsfunktion rand() zur Verfügung gestellt. Diese holt sich aus einer intern erzeugten Reihe von Pseudozufallszahlen jeweils eine Pseudozufallszahl heraus. Mittels der Funktion srand(unsigned seed) kann man mittels seed unterschiedliche Zufallsreihenfolgen anstossen. Das
Programm random1.c zeigt, wie man diese
Funktionen benutzen kann. |
Zufallszahlengenerator ran1.c Dieser
Zufallsgenerator geht zurück auf Überlegungen von Park
und Miller und wird in "Numerical Recipes in C"
(SS.279ff) besprochen. Für eine mathematische Diskussion sei
auf diese Quelle verwiesen. Den Quelltext findet man unter
ran1.c.
|
Statistikprogramm statistik.c Um die mathemtischen Eigenschaften von Zufallszahlenreihenfolgen beschreiben zu können, gibt es verschiedene Verfahren. Ein vergleichsweise einfaches Verfahren, das in der Praxis eine erste Orientierung geben kann, ist die Berechnung der Variationsweite einer Häufigkeitsverteilung von klassifizierten Werten. Man ermittelt den grössten und kleinesten Wert und bildet die Differenz; je kleiner diese Diferenz ist, umso besser ist die Gleichverteilung der Ereignisse auf die verschiedenen Ereignisklassen. Ein Beipsielprogramm ist die Funktion variation() in der Datei statistik.c. |
Random3.c = random1.c + statistik.c Im Programm random3.c wurde das Programm random1.c mit dem Statistikprogramm statistik.c verknüpft. Auf diese Weise kann man das Verhalten des Zufallsgenerator realisiert mit srand() und rand() unter verschiedenen Randbedingungen ausprobieren und bewerten.
|
Random4.c = random2.c + statistik.c Im Programm random4.c wurde das Programm random2.c, das im Kern den Generator ran1.c benutzt, mit dem Statistikprogramm statistik.c verknüpft. Auf diese Weise kann man das Verhalten des Zufallsgenerator realisiert unter verschiedenen Randbedingungen ausprobieren und bewerten.
|
Verschiedene Aufgaben Mit den soeben vorgestellten Zufallsgeneratoren kann man nun zahlreiche interessante Experimente durchführen:
|