Langage C chiffre aléatoire non constant.

Fermé
John - 1 avril 2011 à 19:28
 Antoine - 2 avril 2011 à 21:24
Bonjour,
Voila je souhaiterais savoir si il est possible de faire une selection de chiffre aléatoire non constante
je m'explique :
Après une boucle FOR, si je relance le cas qui fait appel à cette fonction, le nombre aléatoire généré reste le meme, comment le faire changer ?
mon code :

int Aleat;
int MAX = 5, MIN = 1;
srand(rand());
Aleat = (rand() % (MAX - MIN + 1)) + MIN;


A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
1 avril 2011 à 23:50
Bonjour,
C'est normal, rand() renvoie toujours le même nombre. Votre graine est donc constante (srand(a)).
Pour rendre un nombre "aléatoire", vous pouvez utiliser : srand(time(NULL));
Vous aurez besoin d'ajouter en plus la bibliothèque time.h

Cdlt,
0
Bonjour,

Les nombres générés par rand() ne sont pas aléatoires mais pseudo-aléatoire. Ca change tout car l'algorithme débute avec une graine (seed) et applique une fonction sur le dernier résultat renvoyé par rand() si un appel a déjà été fait, sinon, il part de la graine.

srand() sert à définir la graine. Ensuite rand() calcul le premier nombre en partant de la graine, le deuxième en partant du premier... C'est une suite récurrente en fait et U0 est la graine.

Tu utilise rand() dans srand() sans avoir initialisé la graine avant. Une graine par défaut est prise. Donc tu as toujours les mêmes nombres.

En clair, met srand("autre chose"). Ce "autre chose" peut-être le temps (time.h). Il y a plein de code à ce sujet tu trouvera très facilement.
0