SRAND |
Début l'aléatoire |
---|---|
Langage C | stdlib.h |
Syntaxe
void srand(unsigned seed); |
Paramètres
Nom | Description |
---|---|
seed | Ce paramètre permet d'indiquer le nombre de suite de nombre à générer |
Description
Cette fonction permet d'initialiser le générateur de nombre aléatoire.
Algorithme
MODULE SRAND(seed) * Utiliser la graine donnée pour initialiser l'état interne du générateur generator_state ← seed |
Remarques
- Définition et rôle : La fonction srand est utilisée pour initialiser le générateur de nombres pseudo-aléatoires en définissant une graine (seed). Elle fait partie de la bibliothèque standard <stdlib.h>. Le paramètre de srand est un entier non signé (unsigned int) servant à déterminer la séquence de nombres pseudo-aléatoires générés par les appels ultérieurs à rand.
- Impact sur rand : Après un appel à srand(seed), la séquence de nombres retournée par rand() dépend uniquement de la graine spécifiée. Ainsi, en utilisant la même graine, il est possible de reproduire exactement la même séquence de nombres pseudo-aléatoires, ce qui est utile pour tester ou déboguer un programme.
- Initialisation par défaut : Si srand n'est pas appelée avant un appel à rand, le générateur de nombres pseudo-aléatoires est initialisé par défaut avec une graine fixe (généralement 1). Cela signifie que les séquences générées dans ce cas seront toujours les mêmes, ce qui peut poser problème pour des besoins de variabilité réelle.
- Utilisation d'une graine dynamique : Pour générer des séquences pseudo-aléatoires réellement différentes à chaque exécution, il est courant d'utiliser une graine basée sur une valeur changeante, comme l'heure courante. Par exemple : srand((unsigned int)time(NULL)); initialise la graine en fonction de l'heure, rendant la séquence différente à chaque lancement.
- Non-réinitialisation du générateur : Un appel à srand réinitialise le générateur de nombres pseudo-aléatoires, mais il est rarement nécessaire de l'appeler plusieurs fois dans un programme. Réinitialiser fréquemment la graine peut nuire à la qualité des nombres générés en réduisant leur caractère aléatoire.
- Compatibilité entre plateformes : La fonction srand est standard, mais la manière dont le générateur de nombres pseudo-aléatoires utilise la graine peut varier légèrement d'une plateforme à une autre. Cela peut entraîner des différences dans les séquences générées par rand() même avec la même graine.
- Graine invalide : Bien que srand accepte un entier non signé, il n'y a pas de mécanisme de vérification intégré pour des graines invalides ou inutilisables. Par conséquent, l'utilisation d'une graine non réfléchie peut entraîner un comportement inattendu, bien que cela soit rare.
- Substitution par des alternatives : srand et rand sont souvent critiquées pour la faible qualité des séquences générées sur certains systèmes. Pour des applications nécessitant un bon niveau d'aléa (cryptographie, simulations avancées), des alternatives comme srandom et random ou des bibliothèques dédiées comme <random> en C++ ou la bibliothèque Boost sont généralement préférées.
Voir également
Langage de programmation - C - Référence de procédures et fonctions - rand
Langage de programmation - C++ - Référence de procédures et fonctions - srand
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 249.
Dernière mise à jour : Mardi, le 28 juillet 2015