Provided by: manpages-de-dev_4.13-4_all bug

BEZEICHNUNG

       random, srandom, initstate, setstate - Zufallszahlengenerator

ÜBERSICHT

       #include <stdlib.h>

       long random(void);

       void srandom(unsigned seed);

       char *initstate(unsigned 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 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  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  5.10  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 die
       Mailingliste der Übersetzer.

GNU                                             1. November 2020                                       RANDOM(3)