1. Aufgabenstellung

  2. Zufallszahlengenerator random1.c

  3. Zufallszahlengenerator ran1.c

  4. Statistikprogramm statistik.c

  5. random3.c = random1.c + statistik.c

  6. random4.c = random2.c + statistik.c

  7. Verschiedene Aufgaben


C-KURS WS 01/02 - Übungen6 - Ergänzungen zur Vorlesung


AUTHOR: Gerd Döben-Henisch
DATE OF FIRST GENERATION: Nov-5, 2001
DATE OF LAST CHANGE: Nov-5, 2001
EMAIL:
Gerd Döben-Henisch



Aufgabenstellung

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.

START



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.

START



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.

START


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.


START



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.


START


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.


START


Verschiedene Aufgaben

Mit den soeben vorgestellten Zufallsgeneratoren kann man nun zahlreiche interessante Experimente durchführen:

  1. Nehmen Sie das 2-dimensionale-Array aus dem starmove3.c-Demo und ersetzen Sie die Eingabe von der Tatstatur durch einen Zufallsgenerator.

  2. Nehmen Sie das 2-dimensionale-Array aus dem starmove3.c-Demo und erzeugen Sie eine Verteilung von Objekten in dieser Fläche mittels eines Zufallsgenerators.


START