rand
|
Definiert in Header
<stdlib.h>
|
||
|
int
rand
(
)
;
|
||
Gibt einen pseudo-zufälligen Ganzzahlwert zwischen
0
und
RAND_MAX
(
0
und
RAND_MAX
inklusive) zurück.
srand()
initialisiert den Pseudozufallszahlengenerator, der von
rand()
verwendet wird.
Wenn
rand()
vor einem Aufruf von
srand()
verwendet wird,
verhält sich
rand()
so, als wäre er mit
srand
(
1
)
initialisiert worden.
Jedes Mal, wenn
rand()
mit
srand()
initialisiert wird, muss es die gleiche Wertefolge erzeugen.
rand()
ist nicht garantiert threadsicher.
Inhaltsverzeichnis |
Parameter
(keine)
Rückgabewert
Pseudo-zufälliger Ganzzahlwert zwischen 0 und RAND_MAX , inklusive.
Hinweise
Es gibt keine Garantien bezüglich der Qualität der erzeugten Zufallssequenz.
In der Vergangenheit hatten einige Implementierungen von
rand()
ernsthafte Mängel in Bezug auf Zufälligkeit, Verteilung und Periode der erzeugten Sequenz (in einem bekannten Beispiel wechselte das niederwertigste Bit einfach zwischen
1
und
0
bei aufeinanderfolgenden Aufrufen).
rand()
wird für ernsthafte Zufallszahlenanforderungen, wie in der Kryptographie, nicht empfohlen.
POSIX erfordert, dass die Periode des von
rand
verwendeten Pseudozufallszahlengenerators mindestens
2
32
beträgt.
POSIX bot eine threadsichere Version von rand namens
rand_r
an, die zugunsten der
drand48
-Funktionsfamilie veraltet ist.
Beispiel
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand(time(NULL)); // aktuelle Zeit als Seed für Zufallsgenerator verwenden int random_variable = rand(); printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable); // 6-seitigen Würfel 20 Mal werfen for (int n=0; n != 20; ++n) { int x = 7; while(x > 6) x = 1 + rand()/((RAND_MAX + 1u)/6); // Hinweis: 1+rand()%6 ist verzerrt printf("%d ", x); } }
Mögliche Ausgabe:
Random value on [0,2147483647]: 448749574 3 1 3 1 4 2 2 1 3 6 4 4 3 1 6 2 3 2 6 1
Referenzen
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.22.2.1 Die rand-Funktion (S. 252)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.22.2.1 Die rand-Funktion (S: 346)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.20.2.1 Die rand-Funktion (S. 312)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 4.10.2.1 Die rand-Funktion
Siehe auch
|
initialisiert den Pseudozufallszahlengenerator
(Funktion) |
|
|
maximaler möglicher Wert, generiert durch
rand
(
)
(Makrokonstante) |
|
|
C++-Dokumentation
für
rand
|
|