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 :
- unsigned Random (unsigned A, unsigned B)
- {
- for ( ; ; )
- {
- unsigned N = (A + (unsigned)((double)rand() / ((double)RAND_MAX + 1) * B));
- if (N < 97 || N > 122) continue;
- else return N;
- }
- } // Random ()
|
Merci de votre attention
Message édité par Bad Luck le 27-02-2008 à 12:43:09