Srand ?

Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
- - Dernière réponse : fandezizou
Messages postés
16
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
28 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...



Quelqu'un a-t-il une solution à ça ?



Merci d'avance !
Afficher la suite 
A voir également:

7 réponses

Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
0
Merci
Tu as compris ce que fais srand, comment fonctionne rand ?

srand((unsigned) time(NULL)); est à appeler une fois, au debut du programme par exemple.

rand est un générateur de nombre pseudo aleatoire (un mauvais d'ailleur).
Commenter la réponse de steve_clamage
Messages postés
189
Date d'inscription
lundi 30 décembre 2002
Statut
Membre
Dernière intervention
3 avril 2005
0
Merci
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 ?
Commenter la réponse de sebleboss2002
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
0
Merci
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.
Commenter la réponse de steve_clamage
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
0
Merci
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
Commenter la réponse de Arnaud16022
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
0
Merci
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.
Commenter la réponse de steve_clamage
Messages postés
16
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
28 septembre 2006
0
Merci
Bonjour
J'aimerai savoir s'il vous plait avec Dev C++ comment on efface l'écran parce ke clrscr() ne fonctionne pas avec Dev.
Merci
Commenter la réponse de fandezizou
Messages postés
16
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
28 septembre 2006
0
Merci
Salut à tous!!!
j'ai un peitit problème avec les nombres aléatoires


j'ai mis ça mais ça ne marche pas kek'1 aurait une idée.
j'ai bien mis srand au début et tout mais je ne trouve pas la cause de mon pb.


srand((unsigned) time(NULL))

D1=rand()%6 + 1;

merci d'avance.
Commenter la réponse de fandezizou