rand
| Definiert im Header <stdlib.h> |
||
| int rand(); |
||
Gibt einen pseudozufälligen ganzzahligen Wert zwischen 0 und RAND_MAX zurück (einschließlich 0 und RAND_MAX).
srand() initialisiert den von rand() verwendeten pseudozufälligen Zahlengenerator. Wenn rand() vor einem Aufruf von srand() verwendet wird, verhält sich rand() so, als wäre es mit srand(1) initialisiert worden. Jedes Mal, wenn rand() mit srand() initialisiert wird, muss es dieselbe Sequenz von Werten erzeugen.
rand() ist nicht garantiert threadsicher.
Inhalt |
[edit] Parameter
(keine)
[edit] Rückgabewert
Pseudozufälliger ganzzahliger Wert zwischen 0 und RAND_MAX, einschließlich.
[edit] Hinweise
Es gibt keine Garantie für die Qualität der erzeugten Zufallssequenz. In der Vergangenheit hatten einige Implementierungen von rand() ernsthafte Mängel bei der Zufälligkeit, Verteilung und Periode der erzeugten Sequenz (in einem bekannten Beispiel wechselte das niederwertigste Bit einfach zwischen 1 und 0 zwischen den Aufrufen). rand() wird für ernsthafte Anforderungen an die Zufallszahlengenerierung, wie z. B. Kryptographie, nicht empfohlen.
POSIX schreibt vor, dass die Periode des von rand verwendeten pseudozufälligen Zahlengenerators mindestens 232
betragen muss.
POSIX bot eine threadsichere Version von rand namens rand_r an, die zugunsten der drand48-Funktionsfamilie veraltet ist.
[edit] Beispiel
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand(time(NULL)); // use current time as seed for random generator int random_variable = rand(); printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable); // roll a 6-sided die 20 times for (int n=0; n != 20; ++n) { int x = 7; while(x > 6) x = 1 + rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased 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
[edit] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 7.22.2.1 Die Funktion rand (S. 252)
- C11-Standard (ISO/IEC 9899:2011)
- 7.22.2.1 Die Funktion rand (S. 346)
- C99-Standard (ISO/IEC 9899:1999)
- 7.20.2.1 Die Funktion rand (S. 312)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.10.2.1 Die Funktion rand
[edit] Siehe auch
| initialisiert Pseudozufallszahlengenerator (Funktion) | |
| maximal möglicher von rand() generierter Wert (Makrokonstante) | |
| C++ Dokumentation für rand
| |