Namespaces
Variants

srand

From cppreference.net
Défini dans l'en-tête <stdlib.h>
void srand ( unsigned seed ) ;

Initialise le générateur de nombres pseudo-aléatoires utilisé par rand() avec la valeur seed .

Si rand() est utilisé avant tout appel à srand() , rand() se comporte comme s'il était initialisé avec srand ( 1 ) .

Chaque fois que rand() est initialisé avec la même seed , il doit produire la même séquence de valeurs.

srand() n'est pas garanti d'être thread-safe.

Table des matières

Paramètres

seed - la valeur de départ

Valeur de retour

(aucun)

Notes

D'une manière générale, le générateur de nombres pseudo-aléatoires ne doit être initialisé qu'une seule fois, avant tout appel à rand() , et au début du programme. Il ne doit pas être initialisé à plusieurs reprises, ou réinitialisé chaque fois que vous souhaitez générer un nouveau lot de nombres pseudo-aléatoires.

La pratique standard consiste à utiliser le résultat d'un appel à time ( 0 ) comme graine. Cependant, time() retourne une valeur time_t , et time_t n'est pas garanti d'être un type intégral. En pratique, cependant, toutes les implémentations majeures définissent time_t comme un type intégral, et c'est également ce que POSIX exige.

Exemple

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    srand(time(NULL)); //utiliser l'heure actuelle comme graine pour le générateur aléatoire
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

Sortie possible :

Random value on [0 2147483647]: 1373858591

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.22.2.2 La fonction srand (p: 252-253)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.22.2.2 La fonction srand (p: 346-347)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.20.2.2 La fonction srand (p: 312-313)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.10.2.2 La fonction srand

Voir aussi

génère un nombre pseudo-aléatoire
(fonction)
valeur maximale possible générée par rand ( )
(constante macro)