Provided by: manpages-de-dev_1.11-1_all 

BEZEICHNUNG
random, srandom, initstate, setstate - Zufallszahlengenerator
ÜBERSICHT
#include <stdlib.h>
long int random(void);
void srandom(unsigned int seed);
char *initstate(unsigned int seed, char *state, size_t n);
char *setstate(char *state);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
random(), srandom(), initstate(), setstate():
_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
BESCHREIBUNG
Die Funktion random() benutzt einen Zufallsgenerator mit nichtlineareradditiver Rückkopplung (Feedback)
mit einer vorgegebenen Tabellengröße von 31 »long integers«, um aufeinander folgende Pseudozufallszahlen
im Bereich von 0 bis RAND_MAX zurückzugeben. Die Periode dieses Zufallszahlengenerators ist sehr groß,
ungefähr 16 * ((2^31) - 1).
Die Funktion srandom() setzt ihr Argument zur Initialisierung (als »Saat«) für eine neue Folge von
pseudozufälligen Integers, welche von random() geliefert werden. Diese Folgen sind wiederholbar durch
Aufruf von srandom() mit der gleichen Saat. Falls keine Saat angegeben wird, wird random() automatisch
mit dem Wert 1 gestartet.
Die Funktion initstate() erlaubt es, ein Zustandsfeld state für den Gebrauch durch random() zu
initialisieren. Die Größe n des Zustandsfeldes wird von initstate() benutzt, um zu entscheiden wie
differenziert es einen Zufallszahlengenerator benutzen soll — je größer das Zustandsfeld, desto besser
die Zufallszahlen. seed ist der Wert für die Initialisierung, welcher den Startpunkt für den
Zufallszahlenfolge angibt und ermöglicht, am gleichen Punkt erneut zu starten.
Die Funktion setstate() ändert das Zustandsfeld, welches von der Funktion random() benutzt wird. Das
Zustandsfeld state wird bis zum nächsten Aufruf von initstate() oder setstate() zum Erzeugen der
Zufallszahlen benutzt . state muss dafür initialisiert worden sein: durch den Aufruf von initstate() oder
setstate().
RÜCKGABEWERT
Die Funktion random() liefert einen Wert zwischen 0 und RAND_MAX zurück. Die Funktion srandom() liefert
keinen Wert zurück.
Die Funktion initstate() gibt einen Zeiger auf das vorige Zustandsfeld zurück. Bei einem Fehler wird
errno entsprechend gesetzt.
Bei Erfolg gibt initstate() einen Zeiger auf das vorige Zustandsfeld zurück. Bei einem Fehler wird NULL
zurückgegeben und errno entsprechend gesetzt.
FEHLER
EINVAL Das an setstate() übergebene state-Argument war NULL.
EINVAL Ein Zustandsfeld von weniger als 8 Byte wurde an initstate() übergeben.
ATTRIBUTE
Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
┌─────────────────────────┬───────────────────────┬─────────┐
│ Schnittstelle │ Attribut │ Wert │
├─────────────────────────┼───────────────────────┼─────────┤
│ random(), srandom(), │ Multithread-Fähigkeit │ MT-Safe │
│ initstate(), setstate() │ │ │
└─────────────────────────┴───────────────────────┴─────────┘
KONFORM ZU
POSIX.1-2001, POSIX.1-2008, 4.3BSD.
ANMERKUNGEN
Aktuelle »optimale« Werte für die Größe n des Zustandsfeldes sind 8, 32, 64, 128 und 256 Byte; andere
Werte werden abgerundet auf den nächsten bekannten Wert. Verwendung von weniger als 8 Byte verursacht
einen Fehler.
Diese Funktion sollte nicht verwendet werden, wenn mehrere Threads random() nutzen und das Verhalten
reproduzierbar sein sollte. Nutzen Sie für diesen Anwendungsfall stattdessen random_r(3).
Die Erzeugung von Zufallszahlen ist eine schwierige Aufgabe. 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, 2007, 3rd ed.) enthält in Kapitel 7 (Random Numbers) eine
ausgezeichnete Diskussion der Probleme bei der praktischen Erzeugung von Zufallszahlen.
Eine eher theoretische Diskussion, die auch viele praktische Probleme aufgreift, finden Sie in Kapitel 3
(Random Numbers) in Donald E. Knuths The Art of Computer Programming, Volume 2 (Seminumerical
Algorithms), 2nd ed.; Reading, Massachusetts: Addison-Wesley Publishing Company, 1981.
FEHLER
Laut POSIX sollte initstate() im Fehlerfall NULL zurückliefern. In der Glibc-Implementierung wird (wie
spezifiziert) errno im Fehlerfall gesetzt, aber die Funktion liefert nicht NULL zurück.
SIEHE AUCH
drand48(3), getrandom(2), rand(3), random_r(3), srand(3)
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.04 des Projekts Linux-man-pages. Eine Beschreibung des
Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
sich unter http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>, Martin Eberhard
Schauer <Martin.E.Schauer@gmx.de> und Mario Blättermann <mario.blaettermann@gmail.com> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an
<debian-l10n-german@lists.debian.org>.
GNU 8. August 2015 RANDOM(3)