Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
632 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  srand() + orientage objet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

srand() + orientage objet

n°1885057
erikkarls
Posté le 15-05-2009 à 18:30:30  profilanswer
 

Bonjour,
 
voilà j'ai un petit problème avec la fonction rand().
 
J'ai une classe dont une methode utilise rand() pour initialiser certains attributs. Mon problème est que les attributs sont toujours initialisés de la même façon. En effet, rand() me renvoie systematiquement les memes valeurs.
 
Or j'ai bien pensé a faire un srand(time(NULL)) au debut de mon programme. Je me suis dit que la construction des objets avait peut etre lieu avant l'appel à srand ce qui expliquerait le probleme, mais ce n'est pas le cas.
 
En gros dans main() j'ai
srand(time(NULL));
printf("MAIN : %i",rand()%50);
 
et dans ma methode :
printf("METHODE : %i",rand()%50);
 
J'obtiens dans la console dans cet ordre :
MAIN <un nombre toujours different>
METHODE <TOUJOURS LE MEME NOMBRE>
 
on dirait que le srand() dans le main n'a pas d'effet sur l'appel à rand() dans la methode. De plus, je suis sur Ubuntu. j'ai compilé sur un windows et je n'ai pas ce problème, le nombre genéré dans la methode est a chaque fois different...
 
Est-ce que quelqu'un a une idée ?
Je vous remercie  

mood
Publicité
Posté le 15-05-2009 à 18:30:30  profilanswer
 

n°1885064
Joel F
Real men use unique_ptr
Posté le 15-05-2009 à 18:51:25  profilanswer
 

deja tu apprendras que rand()%N ets atroce en terme de distribution.
Regarde du coté de boost::random pour des bonnes pratiques.

n°1885112
erikkarls
Posté le 15-05-2009 à 23:01:21  profilanswer
 

Peut-être que rand()%N n'est pas très bon, mais il devrait quand même pas me sortir à chaque fois la même chose !

n°1885503
superbob56
Posté le 17-05-2009 à 23:53:01  profilanswer
 

Bizarre :s, si le code est pas trop compliqué, donne-le, je pourrais essayer de le compiler sur plusieurs environnements pour voir si ça se répète (windows xp, mac os x...) de ton coté, regarde si ça fait pareil sur d'autres versions et/ou d'autres distrib linux (si tu peux) mais c'est très bizarre comme problème ...


---------------
By bob.
n°1885786
erikkarls
Posté le 18-05-2009 à 17:16:03  profilanswer
 

Merci pour ta proposition superbob, mais c'est du code qui fait parti d'un programme qui commence à être un peu gros (plusieurs dizaines de classes) et donc c'est pas possible de le passer. Par contre je garantis que ça n'arrive pas avec windows. Mais je n'ai pas pu essayer sur d'autres distrib que xubuntu.

n°1885791
theshockwa​ve
I work at a firm named Koslow
Posté le 18-05-2009 à 17:23:37  profilanswer
 

essaye de faire un sample minimal pour reproduire le problème, peut-être ?


---------------
last.fm
n°1885825
Taz
bisounours-codeur
Posté le 18-05-2009 à 19:13:24  profilanswer
 

Bah t'as qu'à juste compiler tes deux printfs et tu verra que ça marche très bien.

n°1886846
superbob56
Posté le 21-05-2009 à 16:25:50  profilanswer
 

N'aurais-tu pas un

Code :
  1. #ifndef _WIN32
  2. srand(0)
  3. #endif

quelque part avant ton appel de la méthode ?
Plus sérieusement, regarde si à certains endroits de ton code, tu as ou tu appelles des fonctions/methode qui pourraient faire des choses comme ça ...


---------------
By bob.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  srand() + orientage objet

 

Sujets relatifs
Problème conception objet pour modeleur UML en GWTstatic_cast objet fille pointeur
POO, objet rempli mais rien quand je l'affiche[debutant] programmation objet et formulaire.
table relationnelles, vues objet et héritagePositionnement objet et image de fond
question basique sur le modèle objetRécuperation d'un objet dans un JList
Problème objet/classefonction srand()
Plus de sujets relatifs à : srand() + orientage objet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR