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

  FORUM HardWare.fr
  Programmation
  C++

  Problème de random en C++ [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de random en C++ [Résolu]

n°1693403
Bad Luck
Posté le 27-02-2008 à 11:52:34  profilanswer
 

Bonjour à tous ^^
 
Voilà, j'ai passé pas mal de temps à essayer de résoudre un problème de random. J'ai fait plusieurs recherches sur Google et sur divers forum, et je n'ai pas trouvé de solution à mon problème. J'espère que quelqu'un prendra un peu de temps pour voir ce qui cloche :)  
 
Alors voilà. Je souhaite tirer une lettre aléatoire entre a et z (soit entre 97 et 122) pour faire des mots aléatoires. J'ai testé plusieurs fois mon programme et j'ai remarqué que mon random ne prenait pas en compte les bornes, c'est-à-dire qu'il lui arrive de renvoyer par exemple 201 ou quelque chose qui n'est pas compris entre 97 et 122. J'ai donc essayé de faire une condition pour qu'il refasse un random si le nombre obtenu n'est pas compris entre 97 et 122. Mais là, lorsque j'exécute le programme, il charge mais il n'affiche rien à l'écran...
 
Le plus étrange dans tout ça, c'est que lorsque j'utilise cette fonction pour trouver un nombre compris entre 2 et 3, ça fonctionne parfaitement ! Et j'ai bien mis le srand(time(NULL)); avant l'appel de la fonction, donc il n'y a pas de problème de ce côté là...
 
Voilà le code de ma fonction :

Code :
  1. unsigned Random (unsigned A, unsigned B)
  2. {
  3.     for ( ; ; )
  4.     {
  5.         unsigned N = (A + (unsigned)((double)rand() / ((double)RAND_MAX + 1) * B));
  6.         if (N < 97 || N > 122) continue;
  7.         else return N;
  8.     }
  9. } // Random ()


Merci de votre attention  :jap:


Message édité par Bad Luck le 27-02-2008 à 12:43:09
mood
Publicité
Posté le 27-02-2008 à 11:52:34  profilanswer
 

n°1693443
rengzehn
Posté le 27-02-2008 à 12:28:51  profilanswer
 

rapido là, je pense que ta fonction renvoie un n entre A et A+B. teste avec  
 
unsigned N = (A + (unsigned)((double)rand() / ((double)RAND_MAX) * (B-A)));
 
edit : pas très chouette toutes ces divisions pour de l'int, vaudrait mieux utiliser le modulo genre
 
N=A+Rand()%(B-A)

Message cité 1 fois
Message édité par rengzehn le 27-02-2008 à 12:38:12
n°1693464
Bad Luck
Posté le 27-02-2008 à 12:42:33  profilanswer
 

rengzehn a écrit :

rapido là, je pense que ta fonction renvoie un n entre A et A+B. teste avec  
 
unsigned N = (A + (unsigned)((double)rand() / ((double)RAND_MAX) * (B-A)));
 
edit : pas très chouette toutes ces divisions pour de l'int, vaudrait mieux utiliser le modulo genre
 
N=A+Rand()%(B-A)


Wah c'est génial, j'ai testé, ça marche :D Merci beaucoup :jap: ça aura été rapide ^^
Problème résolu ^^


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

  Problème de random en C++ [Résolu]

 

Sujets relatifs
Problème d'actualisation des cellules sous excel[AJAX] Probleme d'acces ID liste chainé
problème de format sur VBAprobleme XSD - XML schema
petit probleme de compréhension[RESOLU] problème avec $_SERVER['HTTP_REFERER'] et Flash
[résolu] vista mingw, pb transfert série via adaptateur usb-sérieProblème d'import mysql ?
Plus de sujets relatifs à : Problème de random en C++ [Résolu]


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