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   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)

Ü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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 ⟨debian-l10n-german@lists.debian.org⟩.