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

  FORUM HardWare.fr
  Programmation
  C

  Nombres Aléatoires

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nombres Aléatoires

n°1285713
koskos
Posté le 17-01-2006 à 16:50:17  profilanswer
 

Bonjour à tous et à toutes,
 
Merci d'avance à ceux qui liront ma question :
 
- J'ai un prog qui met ~0.01 sec à s'executer.
- Il fait un appel à srand(time(NULL)) pour initialiser le générateur et  plusieurs à rand(void) pour la séquence de nombres aléatoires.
- Si je l'execute moins de 100 fois d'affilé, la valeur de time(NULL) est toujours la meme, donc la sequence de nombres aléatoires générée aussi.
 
Comment peut on faire pour avoir une graine différente à chaque execution, c'est à dire plusieurs graines différentes en moins d'un seconde?
 
J'ai pensé à clock(), mais il est probable pour que le prog mette à chaque execution autant de temps à s'executer jusqu'au srand.
 
Une suggestion?
 
Merci d'avance et si besoin de plus de précision, hesitez pas!
 
PS : j'utilise un equivalent plus robuste que rand() qu'on peut trouver sur "Numérical recipes" chapitre 7.2 http://www.library.cornell.edu/nr/cbookcpdf.html.


Message édité par koskos le 17-01-2006 à 16:53:28
mood
Publicité
Posté le 17-01-2006 à 16:50:17  profilanswer
 

n°1285878
olivthill
Posté le 17-01-2006 à 19:04:12  profilanswer
 

La suggestion est de n'appeler srand() qu'une seule fois, au lieu de l'appeler constamment (d'ailleurs, il ne sert à rien de l'appeler avec time() ; on peut l'appeler avec un numéro quelconque, pas forcément avec le temps).

n°1285893
0x90
Posté le 17-01-2006 à 19:19:45  profilanswer
 

utilise le pid ptêtre.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1285922
Taz
bisounours-codeur
Posté le 17-01-2006 à 20:02:03  profilanswer
 

ouais, un bon time(NULL) ^ getpid()

n°1286206
fat
Posté le 17-01-2006 à 23:55:34  profilanswer
 

si tu bosse sous windows, il existe la fonction QueryPerformanceCounter  
qui te renvoie le nombre de cycle d'horloge depuis la mise en route du processeur.
Elle te renvoie donc une valeur différente à chaque fois.
Mais comme dis olivthill, ce n'est pas une bonne chose d'appeler trop souvent srand.
pour éviter justement les problèmes que tu rencontre, et si tu l'appelle avec comme paramètre le temps, fais en sorte qu'il y ait un delai variable et aléatoire entre deux appels. et ce délai aléatoire ne devrait pas provenir d'un rand bien sur :-)
tu peux aussi utiliser d'autres sources pour initialiser ton générateur aléatoire, la position du curseur de la souris, la taille de mémoire disponible etc...

n°1286209
0x90
Posté le 18-01-2006 à 00:05:33  profilanswer
 

si tu bosses sous nux au lieu d'aller chercher manuellement toutes ces informations, va lire /dev/random ( ou /dev/urandom selon les besoins et l'existence ).


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.

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

  Nombres Aléatoires

 

Sujets relatifs
Matrice de chiffres aléatoires - RécursivitéAlgorithme nombres premiers
[C] Probleme nombres aléatoires tous differentsNombres aléatoires
Comment obtenir des nombres aléatoires mais seulement des entiers ?[C] gestion des nombres aléatoires
Algo de generation de nombres aleatoires ?Comment obtenir des nombres aleatoires?
nombres aléatoires[Java] Comment faire des nombres aléatoires ( URGENT ) !
Plus de sujets relatifs à : Nombres Aléatoires


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