Seitenleiste

Wiki

Community

Funktionen

Speicher

Konventierung

Zufall

System

Enviroment

Suchen/Ersetzen

int Arithmetik

Multibyte-Chars

srand()

srand ist definiert in der stdlib, die in C über stdlib.h, bzw. in C++ über cstdlib eingebunden wird.

Funktion

srand initialisiert den Pseudo-Zufallszahlen-Generator. Üblicherweise wird er mit einer zur Laufzeit willkürlichen Größe initialisiert, wie z.B. der Zeit. Wird ein fester Wert genommen, wiederholen sich die Zufallszahlen. Nach dem Start des Programms ist der Zufallsgenerator mit dem Wert 1 initialisiert.

Das Setzen des Zufallsgenerators auf einen bestimmten Seed-Wert führt dazu, dass die Zufalls sich in gleicher Reihenfolge wiederholen. Dies ermöglicht das Testen von Programmen, die mit Zufallszahlen verarbeiten, unter den reproduzierbaren Bedingungen.

Signatur

#include <stdlib.h>
void srand( unsigned int seed );

seed: Initialisierungswert des Zufallsgenerators

Return value: -

Bemerkungen

Pseudozufallszahlen sind eine Reihe von zufällig wirkenden Zahlen, die jedoch mit einer mathematischen Formel errechnet werden. Um die Zahlenreihe zu initialisieren verwendet man die Funktion srand().

Beispiel

#include <stdlib.h>
#include <stdio.h>
 
void print5RandomNumbers()
{
  printf( "%d; %d; %d; %d; %d\n", rand(), rand(), rand(), rand(), rand() );
}
 
int main( void )
{
  print( "Initialwert\n" );
  print5RandomNumbers();
 
  srand( time( NULL ) );
  print( "Mit Zeit initialisiert\n" );
  print5RandomNumbers();
 
  srand( 3 );
  print( "Wert 3\n" );
  print5RandomNumbers();
 
  srand( 3 );
  print( "Wert 3 Wiederholung\n" );
  print5RandomNumbers();
 
  srand( 1 );
  print( "Wert 1 == Initialwert\n" );
  print5RandomNumbers();
 
  return 0;
}

Ausgabe:

Initialwert
1144108930; 984943658; 1622650073; 282475249; 16807
Mit Zeit initialisiert
1628753080; 850299574; 1213129056; 596772878; 1855685237
Wert 3
1284843143; 807347327; 572982925; 847425747; 50421
Wert 3 Wiederholung
1284843143; 807347327; 572982925; 847425747; 50421
Wert 1 == Initialwert
1144108930; 984943658; 1622650073; 282475249; 16807

Anmerkung: Die mit der Zeit initialisierten Werte sollten abweichen, die anderen Werte können abweichen von einem eigenen Ergebnis. Wichtig ist, dass der Initialwert (oben) mit 1 übereinstimmt und die Wiederholung von 3 auch dem Wert 3 entspricht.

siehe auch