user
En C, à quoi sert la fonction srand() ?
alphonsio

La fonction srand() sert à initialiser le générateur pseudo-aléatoire, car la fonction rand() ne tire pas véritablement des nombres au hasard.

Les ordinateurs sont incapables de produire de véritables nombres aléatoires, ils utilisent classiquement des générateurs pseudo-aléatoires qui génère en réalité des suites de nombres qui ont des propriétés similaires aux nombres aléatoires.

Le problème est, qu'à conditions initiales identiques, les suites générées sont toujours identiques. Pour obtenir des suites de nombres différentes, ce qui est généralement le cas lorsque l'on utilise un générateur pseudo-aléatoire, il est nécessaire d'initialiser la suite de façon différente. C'est ce que l'on appelle la graine (seed en anglais). La fonction srand (unsigned int seed) permet d'initialiser le générateur pseudo-aléatoire.

La solution communément adoptée pour initialiser le générateur est l'utilisation de l'heure courante de la machine qui, comme elle change constamment, va produire des graines et donc des nombres qui seront différents à chaque instant. D'où l'exécution du code suivant :

// Initialise le générateur pseudo-aléatoires
rand (time(NULL))

Voir aussi :