#46 Standardbibliothek - Zufallszahlen Flashcards
Was sind Zufallszahlen und wofür werden sie in der Informatik genutzt?
Zufallszahlen sind eine Folge von Zahlen mit zufälligem Wert.
Anwendungsbereiche für Zufallszahlen:
- Kryptographie (Schlüsselerzeugung)
- Simulation
- Stichproben (Auswahl aus großer Datenmenge)
- Entscheidungsfindung (z.B. bei Computerspielen)
Was sind die Probleme bei Zufallszahlen?
Computer arbeiten deterministisch, deswegen können keine Zufallszahlen erzeugt werden.
Es können nur Pseudozufallszahlen erzeugt werden.
Welche Eigenschaften sollen bei Pseudozufallszahlen erfüllt sein?
Pseudozufallszahlen sollen
- gleichmäßig verteilt sein
- sich möglichst lange nicht wiederholen
nenne ein einfaches Verfahren für Zufallszahlen von 0 bis m-1.
Methode der linearen
Kongruenz (Lehmer, 1951)
a[0] = seed;
for(i = 1; i < n; i++)
a[i] = (a[i-1] * b + 1) % m;
- Güte abhängig von b und m
- Für Kryptographie nicht geeignet, da mit geeigneten Analysemethoden
Parameter aus Zufallsfolge berechenbar und somit vorhersagbar
Welche Bibliotheksfunktionen für Zufallszahlen gibt es?
Funktionen in stdlib.h
- int rand(): liefert eine Zufallszahl zwischen 0 und der Konstanten RAND_MAX
- void srand(unsigned int seed): Initialisierung der Zufallszahlenfolge
- Die time-Funktion ist hilfreich, um bei jedem Programmaufruf einen anderen
Startwert für den Zufallsgenerator zu setzen.
Beispiel: Erzeuge ganzzahlige Zufallszahlen im Intervall [1, 6]
#include <stdlib.h>
#include <time.h>
...
srand((unsigned) time(NULL));
...
z1 = 1 + rand() % 6;
z2 = 1 + rand() % 6;</time.h></stdlib.h>