Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

       random, srandom, initstate, setstate - Zufallszahlengenerator

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <stdlib.h>

       long random(void);
       void srandom(unsigned int seed);

       char *initstate(unsigned int seed, char state[.n], size_t n);
       char *setstate(char *state);

   Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

       random(), srandom(), initstate(), setstate():
           _XOPEN_SOURCE >= 500
               || /* Glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* Glibc <= 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 2^31 - 1 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  Ganzzahlen,  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 (2^31) - 1 zurück. Die Funktion srandom() liefert
       keinen Wert zurück.

       Die Funktion initstate() gibt einen Zeiger auf das  vorige  Zustandsfeld  zurück.  Bei  einem  Fehlschlag
       liefert sie NULL zurück und setzt errno, um den Fehler anzuzeigen.

       Bei Erfolg gibt initstate() einen Zeiger auf das vorige Zustandsfeld zurück. Bei einem Fehlschlag liefert
       sie NULL zurück und setzt errno, um den Fehler anzuzeigen.

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(), initstate(), setstate()                        │ Multithread-Fähigkeit │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────┴───────────────────────┴─────────┘

STANDARDS

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

ANMERKUNGEN

       Die Funktion random() sollte nicht in Programmen mit mehreren Threads, bei denen reproduzierbares Verhal‐
       ten 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 Scienti‐
       fic 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 Dis‐
       kussion 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  Algo‐
       rithms), 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)

Ü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 Quat‐
       hamer <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 die
       Mailingliste der Übersetzer.

Linux man-pages 6.03                            10. Februar 2023                                       random(3)