random_r(3)                Library Functions Manual                random_r(3)

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

BIBLIOTHEK
       Standard-C-Bibliothek (libc, -lc)

UBERSICHT
       #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 .zustandlan],
                    size_t zustandlan, 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 Aquivalente der in
       random(3) beschriebenen Funktionen. Sie sind fur die Verwendung in
       Multithread-Programmen geeignet, wo jeder Thread eine unabhangige,
       reproduzierbare Zufallszahlensequenz erhalten muss.

       Die Funktion random_r() ist ahnlich 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
       zuruckgeliefert.

       Die Funktion srandom_r() ist wie srandom(3), ausser dass sie den
       Zufallsstartwert fur 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), ausser 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 ahnlichem reserviert werden.)

       Die Funktion setstate_r() ist wie setstate(3), ausser dass sie den
       Zustand in dem Objekt verandert, auf das puf zeigt, anstatt die globale
       Zustandsvariable zu verandern. zustand muss zuerst mittels
       initstate_r() oder dem vorherigen Aufruf von setstate_r() initialisiert
       worden sein.

RUCKGABEWERT
       Alle diese Funktionen liefern 0 im Erfolgsfall zuruck. Im Fehlerfall
       wird -1 zuruckgeliefert, 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) fur eine Erlauterung der in diesem Abschnitt
       verwandten Ausdrucke.

       +-----------------------+-------------------------+--------------------+
       |Schnittstelle          | Attribut                | Wert               |
       +-----------------------+-------------------------+--------------------+
       |random_r(),            | Multithread-Fahigkeit   | MT-Sicher race:buf |
       |srandom_r(),           |                         |                    |
       |initstate_r(),         |                         |                    |
       |setstate_r()           |                         |                    |
       +-----------------------+-------------------------+--------------------+
STANDARDS
       GNU.

FEHLER
       Die Schnittstelle initstate_r() ist unubersichtlich. 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
       uberschreiben.

SIEHE AUCH
       drand48(3), rand(3), random(3)

UBERSETZUNG
       Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge
       Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 <https://www.gnu.org/licenses/gpl-3.0.html>
       oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG
       ubernommen.

       Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden,
       schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer
       <debian-l10n-german@lists.debian.org>.

Linux man-pages 6.12             23. Juli 2024                     random_r(3)