Provided by: manpages-de-dev_1.11-1_all bug

BEZEICHNUNG

       rand, rand_r, srand - Pseudo-Zufallszahlengenerator

ÜBERSICHT

       #include <stdlib.h>

       int rand(void);

       int rand_r(unsigned int *seedp);

       void srand(unsigned int seed);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       rand_r(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

BESCHREIBUNG

       Die  Funktion  rand()  gibt  eine  pseudo-zufällige  Ganzzahl  im  Bereich  0 bis RAND_MAX
       inklusive zurück (d.h. dem mathematischen Bereich [0, RAND_MAX]).

       Die  Funktion  srand()  setzt  ihr   Argument   als   Seed   (Zufallswert   zum   Erzeugen
       kryptografischer  Schlüssel) für eine neue Reihe von pseudo-zufälligen Ganzzahlen ein, die
       von rand() zurückgegeben werden. Diese Sequenzen sind durch Aufruf  von  srand()  mit  dem
       selben Seed-Wert wiederholbar.

       Wenn kein Seed angegeben wird, wird automatisch 1 als Seed-Wert für rand() genommen.

       The function rand()  is not reentrant, since it uses hidden state that is modified on each
       call. This might just be the seed value to be used by  the  next  call,  or  it  might  be
       something more elaborate. In order to get reproducible behavior in a threaded application,
       this state must be made explicit; this can be done using the reentrant function rand_r().

       Wie rand() gibt rand_r() eine pseudo-zufällige Ganzzahl im Bereich  [0, RAND_MAX]  zurück.
       Das  Argument seedp ist ein Zeiger auf einen unsigned int, der benutzt wird, um den Status
       zwischen Aufrufen zu speichern. Falls  rand_r()  mit  dem  gleichen  Anfangswert  für  die
       Ganzzahl  aufgerufen  wird,  auf die seedp zeigt, und der Wert zwischen den Aufrufen nicht
       verändert wurde, dann wird das Ergebnis die gleiche pseudo-zufällige Sequenz sein.

       Der Wert, auf den das Argument seedp von rand_r() zeigt, stellt nur einen  kleinen  Anteil
       des  Status  bereit,  daher  wird diese Funktion nur ein schwacher Pseudo-Zufallsgenerator
       sein. Probieren Sie stattdessen drand48_r(3).

RÜCKGABEWERT

       Die Funktionen rand() und rand_r() geben einen Wert zwischen 0  und  RAND_MAX  (inklusive)
       zurück. Die Funktion srand() gibt keinen Wert zurück.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌──────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├──────────────────────────┼───────────────────────┼─────────┤
       │rand(), rand_r(), srand() │ Multithread-Fähigkeit │ MT-Safe │
       └──────────────────────────┴───────────────────────┴─────────┘

KONFORM ZU

       Die  Funktionen  rand()  und  srand()  richten  sich  nach  SVr4,  4.3BSD,  C89,  C99  und
       POSIX.1-2001.  Die  Funktion  rand_r()  richtet  sich  nach   POSIX.1-2001.   POSIX.1-2008
       kennzeichnet rand_r() als veraltet.

ANMERKUNGEN

       Die  Versionen  von  rand()  und  srand()  in  der  Linux C-Bibliothek benutzen den selben
       Zufallszahlengenerator wie random(3) und  srandom(3),  daher  sollten  niederwertige  Bits
       genauso zufällig wie höherwertige Bits sein. Bei älteren Implementierungen von rand() sind
       niederwertige Bits jedoch viel weniger zufällig als höherwertige Bits. Benutzen Sie  diese
       Funktion  nicht  in  Anwendungen, die portierbar sein sollen, wenn ein hochwertiger Zufall
       benötigt wird. (Benutzen Sie stattdessen random(3).)

BEISPIEL

       POSIX.1-2001 gibt das folgende Beispiel einer Implementierung von rand() und srand(),  das
       vielleicht   nützlich   ist,   wenn   es   darum   geht,  die  gleiche  Abfolge  auf  zwei
       unterschiedlichen Rechnern zu erhalten.

           static unsigned long next = 1;

           /* es wird angenommen, dass RAND_MAX 32767 ist */
           int myrand(void) {
               next = next * 1103515245 + 12345;
               return((unsigned)(next/65536) % 32768);
           }

           void mysrand(unsigned int seed) {
               next = seed;
           }

       Das folgende Programm kann benutzt werden, um eine  pseudo-zufällige  Sequenz  anzuzeigen,
       die  durch  rand()  erzeugt  wird,  wenn  eine  bestimmte  Seed  (Zufallswert zum Erzeugen
       kryptografischer Schlüssel) vorgegeben wird.

           #include <stdlib.h>
           #include <stdio.h>

           int
           main(int argc, char *argv[])
           {
               int j, r, nloops;
               unsigned int seed;

               if (argc != 3) {
                   fprintf(stderr, "Aufruf: %s <seed> <nloops>\n", argv[0]);
                   exit(EXIT_FAILURE);
               }

               seed = atoi(argv[1]);
               nloops = atoi(argv[2]);

               srand(seed);
               for (j = 0; j < nloops; j++) {
                   r =  rand();
                   printf("%d\n", r);
               }

               exit(EXIT_SUCCESS);
           }

SIEHE AUCH

       drand48(3), random(3)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  4.04  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 http://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>  und
       Chris Leick <c.leick@vollbio.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 <debian-l10n-german@lists.debian.org>.

                                           2. März 2015                                   RAND(3)