Srand & rand

skypouap - 2 juil. 2013 à 10:29
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 - 20 août 2013 à 21:33
Bonjour M et Mme

J'aimerai que quelqu'un m'aide afin d'obtenir le contenu (code source) de srand() et rand().
Au fait je cherche à comprendre l'algorithme qui génère les nombres aléatoires. Merci pour votre aide...

2 réponses

ringo73 Messages postés 29 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 20 août 2017
19 août 2013 à 15:35
Tu ne pourra pas l'avoir : il existe uniquement en code machine (mais tu peux quand meme verifier...).

Pour son fonctionnement, c'est simple:
1/on se positionne qqpart dans une tres longue liste de nombre (de 0 à 30 000 environ) via ex: srand(3479).
2/pour eviter d'etre toujours a la meme position de cette liste à chaque appelle du programme, on met en argument time(NULL) (renvoie le nombre de secondes écoulees depuis 1970)
3/ensuite, on utilise rand() qui renvoie un nombre PSEUDO-aléatoire. A chaque appelle de cette fonction, cette derniere nous renvoie le nombre qui est à l'emplacement "x+nombre de fois où la fonction a été appelé" si "srand(x)".
0
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
20 août 2013 à 21:33
Bonsoir,

Si je ne m'abuse, rand() ne se base pas (pas uniquement, en tout cas) sur une liste de nombre prédéterminée. Elle se base sur un seed (donné par srand() ou recalculé au précédent appel de rand()) pour trouver le nombre suivant.

Après une petite recherche sur Google (premier résultat de "rand source code"), j'ai trouvé ceci : http://stackoverflow.com/questions/4768180/rand-implementation
0
Rejoignez-nous