Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

       random_r, srandom_r, initstate_r, setstate_r - Ablaufinvarianter Zufallszahlen-Generator

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <stdlib.h>

       int random_r(struct random_data *restrict puf,
                    int32_t *restrict ergebnis);
       int srandom_r(unsigned int zstart, struct random_data *puf);

       int initstate_r(unsigned int zstart, char zustandpuf[restrict .zustandlän],
                    size_t zustandlän, struct random_data *restrict puf);
       int setstate_r(char *restrict zustandpuf,
                    struct random_data *restrict puf);

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

       random_r(), srandom_r(), initstate_r(), setstate_r():
           /* Glibc >= 2.19: */ _DEFAULT_SOURCE
               || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

BESCHREIBUNG

       Diese  Funktionen  sind  die ablaufinvarianten Äquivalente der in random(3) beschriebenen Funktionen. Sie
       sind  für  die  Verwendung  in  Multithread-Programmen  geeignet,  wo  jeder  Thread  eine   unabhängige,
       reproduzierbare Zufallszahlensequenz erhalten muss.

       Die   Funktion   random_r()   ist   ähnlich   random(3).   Der   Unterschied   besteht  darin,  dass  sie
       Zustandsinformationen im Argument, auf das puf zeigt, anstatt von Zustandsinformationen in einer globalen
       Variablen verwendet. puf  muss  vorab  durch  initstate_r()  initialisiert  worden  sein.  Die  erstellte
       Zufallszahl wird im Argument ergebnis zurückgeliefert.

       Die   Funktion   srandom_r()   ist   wie   srandom(3),  außer  dass  sie  den  Zufallsstartwert  für  den
       Zufallszahlengenerator initialisiert, dessen Zustand in dem Objekt verwaltet wird, auf das puf zeigt, das
       vorher durch initstate_r() initialisiert werden muss, anstatt den Zufallsstartwert zu verwenden, der  der
       globalen Zustandsvariablen zugeordnet ist.

       Die  Funktion initstate_r() ist wie initstate(3), außer dass sie den Zustand in dem Objekt initialisiert,
       auf das puf zeigt, anstatt die globale Zustandsvariable zu initialisieren. Bevor die Funktion  aufgerufen
       wird,  muss  das  Feld buf.state auf NULL initialisiert werden. Die Funktion initstate_r() zeichnet einen
       Zeiger auf das Argument statebuf innerhalb der Struktur auf, auf die puf  zeigt.  Daher  sollte  statebuf
       nicht  freigegeben  werden,  solange  puf  noch  verwandt wird. (Daher sollte statebuf typischerweise als
       statische Variable oder auf dem Heap mittels malloc(3) oder ähnlichem reserviert werden.)

       Die Funktion setstate_r() ist wie setstate(3), außer dass sie den Zustand in dem  Objekt  verändert,  auf
       das  puf  zeigt,  anstatt  die  globale  Zustandsvariable  zu  verändern.  zustand  muss  zuerst  mittels
       initstate_r() oder dem vorherigen Aufruf von setstate_r() initialisiert worden sein.

RÜCKGABEWERT

       Alle diese Funktionen liefern 0 im Erfolgsfall zurück. Im Fehlerfall wird -1 zurückgeliefert, wobei errno
       gesetzt wird, um den Fehler anzuzeigen.

FEHLER

       EINVAL In initstate_r() wurde ein Zustandsfeld von weniger als 8 byte festgelegt.

       EINVAL Das Argument zustandpuf oder puf von setstate_r() war NULL.

       EINVAL Das Argument puf oder ergebnis von random_r() war NULL.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌──────────────────────────────────────────────────────────┬───────────────────────┬────────────────────┐
       │ SchnittstelleAttributWert               │
       ├──────────────────────────────────────────────────────────┼───────────────────────┼────────────────────┤
       │ random_r(), srandom_r(), initstate_r(), setstate_r()     │ Multithread-Fähigkeit │ MT-Sicher race:buf │
       └──────────────────────────────────────────────────────────┴───────────────────────┴────────────────────┘

STANDARDS

       GNU.

FEHLER

       Die  Schnittstelle  initstate_r()  ist  unübersichtlich.  Es  erscheint,   dass   der   Typ   random_data
       undurchsichtig  sein soll, aber die Implementation verlangt vom Benutzer, entweder das Feld buf.state auf
       NULL zu initialisieren oder vor Aufruf die gesamte Struktur mit Nullen zu überschreiben.

SIEHE AUCH

       drand48(3), rand(3), random(3)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> 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: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                              2. Mai 2024                                       random_r(3)