Provided by: manpages-de-dev_2.5-1_all bug

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():
           _XOPEN_SOURCE >= 500
               || /* Glibc seit 2.19: */ _DEFAULT_SOURCE
               || /* Glibc-Versionen <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

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. Derzeit sind »optimale« Werte für
       die  Größe  des  Zustandsfelds  n 8, 32, 64, 128 und 256 Byte; andere Größen werden zu dem
       nächsten bekannten Wert abgerundet. Die Verwendung von weniger als 8 Byte führt  zu  einem
       Fehler.  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.

       ┌────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├────────────────────────┼───────────────────────┼─────────┤
       │random(), srandom(),    │ Multithread-Fähigkeit │ MT-Safe │
       │initstate(), setstate() │                       │         │
       └────────────────────────┴───────────────────────┴─────────┘

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

ANMERKUNGEN

       Die Funktion  random()  sollte  nicht  in  Programmen  mit  mehreren  Threads,  bei  denen
       reproduzierbares   Verhalten  benötigt  wird,  verwandt  werden.  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

       getrandom(2), drand48(3), rand(3), random_r(3), srand(3)

KOLOPHON

       Diese  Seite  ist  Teil  der  Veröffentlichung  4.15  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 https://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>,      Mario      Blättermann
       <mario.blaettermann@gmail.com> und Dr. Tobias Quathamer <toddy@debian.org> 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>.