sebleboss2002
Messages postés189Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention 3 avril 2005
-
2 avril 2005 à 12:43
fandezizou
Messages postés16Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention28 septembre 2006
-
4 nov. 2005 à 14:28
Salut à tous !
Je débute complètement en C, et je suis en train d'essayer de coder un jeu du "plus ou moins".
Mais j'ai un problème au niveau de la génération de nombres aléatoires. Mon code est le suivant :
int Nombre()
{
srand((unsigned) time(NULL));
return (rand() % 999) + 1;
}
Mais voilà, il me retourne un nombre dépendant d'un timer
(apparemment), car lorsque j'exécute le code plusieurs fois d'affilées,
les nombres générés sont toujours proportionnellement croissants ! Or,
je voudrais qu'il puisse me générer coup sur coup un 1, un 785, un
420... Et non pas des 780, 785, 790, 795...
sebleboss2002
Messages postés189Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention 3 avril 2005 2 avril 2005 à 13:48
D'abord, merci de ta réponse, je savais que srand devait être appelé en
début de programme, mais je ne l'avait pas fait... Enfin, maintenant
c'est bon, merci de m'avoir mis le nez sur mon erreur :-)
Mais sinon, je suis assez intéressé par tout ce que l'on pourra m'apprendre sur les fonctions srand et rand.
Et d'ailleurs, pourquoi dis-tu que celle-ci est mauvaise ?
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 2 avril 2005 à 14:31
Le rand fourni par la bibliothèque standard fonctionne avec une graine
(un entier que tu initialises avec srand) et chaque nombre généré par
rand dépend du précédent. Mets srand(2) par exemple au debut du
programme et tu auras toujours la meme sequence.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 2 avril 2005 à 15:57
un ordi ne peut pas générer comme ca des nombres aléatoires.
en gros ce qu'il fait c'est qu'il récupèere le tickcount (nbre de
millisecondes depuis le boot) , il le triture un peu et il te le
refourge comme ca, c'est minable
la seule maniere a ma connaissance d'avoir des nombres réellement
aléatoires c'est un module externe , qui envoie des photons sur des
miroirs semi-réfléchissants, un trtuc de ouf bourré de physique
quantique, qui en plus dois valoir des millions.et puis pour l'usage
qu'on en fait, rand() est tres bien.
ya eu quelques forums la dessus par ici...
++
Arnaud
_______________________
Omnia vincit labor improbus
Vous n’avez pas trouvé la réponse que vous recherchez ?
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 2 avril 2005 à 16:41
Pour résumer, on va dire qu'il est impossible dans la pratique de
générer de vrai nombre aléatoire. Celui fournit par a bibliothèque
standard est suffisant pour une utilisation "simple" et est portable,
mais cela reste un tres mauvais générateur de nombres pseudo aléatoire,
les applications scientifiques disposent souvent de leur propre
générateur.