Namespaces
Variants

srand

From cppreference.net
Definiert in Header <stdlib.h>
void srand ( unsigned seed ) ;

Initialisiert den Pseudozufallszahlengenerator, der von rand() verwendet wird, mit dem Wert seed .

Wenn rand() vor jeglichem Aufruf von srand() verwendet wird, verhält sich rand() so, als wäre es mit srand ( 1 ) initialisiert worden.

Jedes Mal, wenn rand() mit demselben seed initialisiert wird, muss es dieselbe Sequenz von Werten erzeugen.

srand() ist nicht garantiert threadsicher.

Inhaltsverzeichnis

Parameter

seed - der Seed-Wert

Rückgabewert

(keine)

Hinweise

Allgemein gesprochen sollte der Pseudozufallszahlengenerator nur einmal initialisiert werden, bevor irgendwelche Aufrufe von rand() stattfinden, und zwar zu Beginn des Programms. Es sollte nicht wiederholt initialisiert oder jedes Mal neu initialisiert werden, wenn Sie einen neuen Satz von Pseudozufallszahlen generieren möchten.

Standardpraxis ist es, das Ergebnis eines Aufrufs von time ( 0 ) als Seed zu verwenden. Allerdings gibt time() einen time_t -Wert zurück, und time_t ist nicht garantiert ein integraler Typ. In der Praxis definiert jedoch jede bedeutende Implementierung time_t als integralen Typ, und dies ist auch, was POSIX vorschreibt.

Beispiel

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    srand(time(NULL)); //verwende aktuelle Zeit als Seed für Zufallsgenerator
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

Mögliche Ausgabe:

Random value on [0 2147483647]: 1373858591
**Übersetzungsdetails:** - "Run this code" → "Diesen Code ausführen" - "use current time as seed for random generator" → "verwende aktuelle Zeit als Seed für Zufallsgenerator" - "Possible output:" → "Mögliche Ausgabe:" - HTML-Tags, Attribute und Code innerhalb der `
`-Tags wurden unverändert beibehalten
- C++-spezifische Begriffe wie `srand`, `rand`, `RAND_MAX`, `printf` wurden nicht übersetzt

Referenzen

  • C17-Standard (ISO/IEC 9899:2018):
  • 7.22.2.2 Die srand-Funktion (S: 252-253)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.22.2.2 Die srand-Funktion (S: 346-347)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.20.2.2 Die srand-Funktion (S: 312-313)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.10.2.2 Die srand-Funktion

Siehe auch

erzeugt eine Pseudo-Zufallszahl
(Funktion)
maximaler möglicher Wert, erzeugt durch rand ( )
(Makrokonstante)