Provided by:
manpages-de-dev_0.5-4.1ubuntu1_all 
BEZEICHNUNG
rand, srand - Zufallszahlengenerator
ÜBERSICHT
#include <stdlib.h>
int rand(void);
void srand(unsigned int seed);
BESCHREIBUNG
Die Funktion rand() liefert eine Pseudozufalls-Ganzzahl (integer)
zwischen 0 und RAND_MAX.
Die Funktion srand() setzt ihr Argument als Ursprung für eine neue
Reihe von Pseudozufalls-Ganzzahlen ein, welche von rand() geliefert
werden. Diese Sequenzen sind durch Aufruf von srand() mit dem selben
Ursprungswert wiederholbar.
Wenn kein Ursprungswert angegeben wird, wird 1 als Ursprungswert für
rand() angenommen.
RÜCKGABEWERT
Die Funktion rand() liefert einen Wert zwischen 0 und RAND_MAX. Die
Funktion srand() liefert keinen Wert zurück.
ANMERKUNGEN
Die Versionen von rand() und srand() in der Linux C-Bibliothek benutzen
den selben Zufallszahlengenerator wie random() und srandom(), d.h.
niederwertige Bits sind genauso zufällig wie höherwertige Bits. Bei
älteren Implementationen von rand() sind niederwertige Bits jedoch viel
weniger zufällig als höherwertige Bits.
In Numerical Recipes in C: The Art of Scientific Computing (William H.
Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling; New
York: Cambridge University Press, 1990 (1st ed, p. 207)), finden sich
die folgenden Kommentare:
"Wenn Sie Zufalls-Ganzzahlen zwischen 1 und 10 erzeugen möchten,
sollten Sie dies immer wie folgt tun:
j=1+(int) (10.0*rand()/(RAND_MAX+1.0));
und niemals auf folgene oder ähnliche Weise:
j=1+((int) (1000000.0*rand()) % 10);
(wodurch niederwertige Bits benutzt würden)."
Zufallszahlenerzeugung ist ein kompliziertes Thema. Das Buch Numerical
Recipes in C (siehe oben) liefert eine exzellente Diskussion über
praktische Zufallszahlenerzeugung in Kapitel 7 (Zufallszahlen).
Für eine mehr theoretische Diskussion, die auch viele praktische
Aspekte behandelt, sehen Sie bitte Kapitel 3 (Zufallszahlen) in Donald
E. Knuths The Art of Computer Programming, volume 2 (Seminumerical
Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing
Company, 1981.
KONFORM ZU
SVID 3, BSD 4.3, ISO 9899
SIEHE AUCH
random(3), srandom(3), initstate(3), setstate(3).