Namensräume
Varianten
Aktionen

srand

Von cppreference.com
< c‎ | numeric‎ | random
Definiert im Header <stdlib.h>
void srand( unsigned seed );

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

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

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

srand() ist nicht garantiert Thread-sicher.

Inhalt

[bearbeiten] Parameter

seed - der Seed-Wert

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Anmerkungen

Generell sollte der Pseudozufallszahlengenerator nur einmal zu Beginn des Programms, vor jeglichen Aufrufen von rand(), initialisiert werden. Er sollte nicht wiederholt oder jedes Mal neu initialisiert werden, wenn Sie eine neue Charge 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 ganzzahliger Typ. In der Praxis definieren jedoch alle großen Implementierungen time_t als ganzzahligen Typ, und dies ist auch das, was POSIX vorschreibt.

[bearbeiten] 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);
}

Mögliche Ausgabe

Random value on [0 2147483647]: 1373858591

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

generiert eine Pseudozufallszahl
(Funktion) [bearbeiten]
maximal möglicher Wert, der von rand() generiert werden kann
(Makrokonstante) [bearbeiten]