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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

optimiser vitesse de rand() en c++ ?

n°1653347
Joel F
Real men use unique_ptr
Posté le 05-12-2007 à 15:26:47  profilanswer
 

Reprise du message précédent :
bah, au debut de ton main, ou plus proprement dans une fonctino d'init générale, ou encore avec un test sur un variable static dasn ta fonction hasard

mood
Publicité
Posté le 05-12-2007 à 15:26:47  profilanswer
 

n°1653368
el muchach​o
Comfortably Numb
Posté le 05-12-2007 à 15:37:58  profilanswer
 

Boulou a écrit :

Je suis passé à SMFT : http://www.math.sci.hiroshima-u.ac [...] index.html
une version amélioré du Mersenne Twister et j'ai vu une bonne différence :)
par contre je pense que je peux encore amélioré mon prog, voici maintenant ma fonction hasard :

Code :
  1. #include "SFMT.c"
  2. int hasard(int min, int max){
  3. if (max >= min)
  4. {
  5.  init_gen_rand(time(NULL));
  6.  int n;
  7.  n = (int) floor(genrand_real2() * (max - min + 1) + min); //génère un flottant entre [min; max+1[ et arrondi
  8.  return n;
  9. }
  10. else
  11. {
  12.  printf("ERREUR fonction hasard : max < min\n" );
  13.  system("pause" );
  14. }
  15. }


comme vous pouvez le voir j'initialise la seed à chaque fois que je lance la fonction hasard : j'ai essayé de mettre le init_gen_rand(time(NULL));  à un endroit du programme pour y faire appel moins souvent mais ca plante...
 
auriez vous une idée ?  
merci :)


 :heink: euh, je vois mal comment tu peux améliorer ta fonction hasard avec un code comme celui-là. Tu attaches une brouette à roues carrées à un cheval de course.
Il est complètement inutile d'aller chercher la fonction rand la plus rapide existante si tu l'associes à un code que tu écris hyper lent.
Ton if est complètement inutile, de même que ta variable, et je ne parlerai même pas de la gestion d'erreur totalement incongrue dans une fonction rand()...


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1653372
Boulou
Wingfoil
Posté le 05-12-2007 à 15:40:48  profilanswer
 

el muchacho a écrit :


 :heink: euh, je vois mal comment tu peux améliorer ta fonction hasard avec un code comme celui-là. Tu attaches une brouette à roues carrées à un cheval de course.
Il est complètement inutile d'aller chercher la fonction rand la plus rapide existante si tu l'associes à un code que tu écris hyper lent.
Ton if est complètement inutile, de même que ta variable, et je ne parlerai même pas de la gestion d'erreur totalement incongrue dans une fonction rand()...


 
ok pour la variable inutile ^^
 
par contre le if c'était juste pour du debug d'une autre fonction :)

n°1653379
Lam's
Profil: bas.
Posté le 05-12-2007 à 16:03:46  profilanswer
 

el muchacho a écrit :


 :heink: euh, je vois mal comment tu peux améliorer ta fonction hasard avec un code comme celui-là. Tu attaches une brouette à roues carrées à un cheval de course.
Il est complètement inutile d'aller chercher la fonction rand la plus rapide existante si tu l'associes à un code que tu écris hyper lent.
Ton if est complètement inutile, de même que ta variable, et je ne parlerai même pas de la gestion d'erreur totalement incongrue dans une fonction rand()...


J'avais pas fait attention, mais d'après sont first post, en fait il écrit un programme pour résoudre Eternity 2. Ca va demander un poil plus de concentration que ça pour résoudre le problème (surtout qu'il existe des programme distribués fortement bourrins pour résoudre le truc).  :)  
 

n°1653382
Boulou
Wingfoil
Posté le 05-12-2007 à 16:06:51  profilanswer
 

Lam's a écrit :


J'avais pas fait attention, mais d'après sont first post, en fait il écrit un programme pour résoudre Eternity 2. Ca va demander un poil plus de concentration que ça pour résoudre le problème (surtout qu'il existe des programme distribués fortement bourrins pour résoudre le truc).  :)  
 


oué en fait c'est plus un prétexte pour me mettre au c++, c'est clair que j'y arriverai pas ;)
pour ca j'essai de programmer une méthode moins bourrin ^^

n°1711905
karadinski
Posté le 03-04-2008 à 09:53:07  profilanswer
 

MagicBuzz a écrit :

Déjà, est-ce que t'as un réel besoin d'une fonction "vraiment" aléatoire ?
 
En effet, y'a d'autres éléments accessibles sur un PC capables de fournir des éléments suffisament aléatoires pour beaucoup d'application, et qui ne nécessitent pas le moindre calcul.
 
Ensuite, je suis pas trop sûr que tes cast soient super optimisés. Tu nous mélange du int et du float à tout va. Je te conseille de bosser exclusivement en float, et ne caster qu'au retour, ou inversement, caster le plus tôt possible vers du int exclusivement. Mais bon niveau perfs ça changera pas grand chose.


 
Voilà un bon gros débile d'informaticien.
Répondant à côté de la plaque,
en plus n'importe quoi pour faire croire qu'il s'y connait mais en fait il n'en est rien.
La fonction que tu critiques est la bonne façon de generer une loi uniforme entre le min et le max dans le cas continu. car rand() renvoie une loi uniforme entre 0 et RAND_MAX => rand()/RAND_MAX est distribué selon une loie uniforme entre 0 et 1 => min + rand()/RAND_MAX * (max-min+1) est distribué selon une loie uniforme entre min et max. Pour discrétiser le tout on caste par (int). On obtient ainsi la fonction de repartition voulu. Le seul moyen d'optimiser ceci est de faire son propre générateur pseudo aléatoire plus optimiser que rand(). Il existe divers algorithme tel que la congruence linéaire.

n°1711940
ccp6128
Syntax error
Posté le 03-04-2008 à 10:33:17  profilanswer
 

Déterrer un topic pour ca ...
 
Si tu avais lu les posts suivants, tu aurais vu qu'il a déjà été souligné que Magic avait dit n'importe quoi.
 
Et rand() utilise déjà un algo à congruence linéaire.

n°1711966
ElDesdicha​do
Posté le 03-04-2008 à 11:24:29  profilanswer
 

Pelle d'or of the day??? Peut-être pas pour la date, mais pour l'inutilité totale du déterrage....?
 
http://www.abetteridea.com/paperweight%20pix/1651.jpg

n°1712461
douleur po​stnuptiale
Femme de goût
Posté le 03-04-2008 à 21:41:04  profilanswer
 

Lam's a écrit :


J'avais pas fait attention, mais d'après sont first post, en fait il écrit un programme pour résoudre Eternity 2. Ca va demander un poil plus de concentration que ça pour résoudre le problème (surtout qu'il existe des programme distribués fortement bourrins pour résoudre le truc).  :)  
 


 [:cerveau ouch]


---------------
putain dante tu fais chier :fou:
n°1720676
dams32
Posté le 20-04-2008 à 22:26:49  profilanswer
 

Moi je conseillerais de mettre ta fonction en inline et d'utiliser le Mersenne Twister comme dit plus haut.

mood
Publicité
Posté le 20-04-2008 à 22:26:49  profilanswer
 

n°1720739
Joel F
Real men use unique_ptr
Posté le 21-04-2008 à 07:48:41  profilanswer
 

welcome to last month quoi ...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[VC++] Plantage de rand() sous win2000Comment optimiser du c sharp (changement onglets)
MySQL - Optimiser le lien entre deux tablesOptimiser l'affichage d'un arbre/forum
Optimiser SDLComment Optimiser l'execution du code avec GCC ??
Améliorer la vitesse du fonction donnant un nombre aléatoireVitesse d'execution : bon ou pas bon ?
[XP] Gigabit Ethernte => Vitesse maximale en UDP ?vitesse d'éxecution sur différents ordinateurs (Résolu)
Plus de sujets relatifs à : optimiser vitesse de rand() en c++ ?


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