Namespaces
Variants

std:: srand

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

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

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

Chaque fois que std::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() , 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 à std:: time ( 0 ) comme graine. Cependant, std::time retourne une valeur std:: time_t , et std:: time_t n'est pas garanti d'être un type intégral. En pratique cependant, toutes les implémentations majeures définissent std:: time_t comme un type intégral, ce qui est également requis par POSIX.

Exemple

#include <cstdlib>
#include <ctime>
#include <iostream>
int main() 
{
    std::srand(std::time(0)); // utiliser l'heure actuelle comme graine pour le générateur aléatoire
    std::cout << "Valeur aléatoire sur [0, " << RAND_MAX << "]: " << std::rand() << '\n';
}

Sortie possible :

Valeur aléatoire sur [0, 2147483647]: 1373858591

Voir aussi

génère un nombre pseudo-aléatoire
(fonction)
valeur maximale possible générée par std::rand
(constante macro)
réinitialise le moteur aléatoire par thread
(fonction)