Un random spécial
Résolu
Akuro
Messages postés
234
Date d'inscription
Statut
Membre
Dernière intervention
-
Akuro Messages postés 234 Date d'inscription Statut Membre Dernière intervention -
Akuro Messages postés 234 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je crée un petit programme en C++ pour lequel j'ai besoin de générer des nombres aléatoirement. Pour cela, j'utilise
pour les générer.
Mon problème est que le programme étant très petit, le premier nombre généré est toujours le même puisqu'il met le même temps pour s'exécuter à chaque fois.
J'ai rajouté un cin avec "Voulez-vous commencer?" pour temporiser le premier résultat mais ça n'a apparemment rien changé. Je suppose que le temps écoulé pendant l'attente de la réponse n'est pas pris en compte.
J'ai donc pensé à réaliser un random à partir du temps de l'ordinateur et non du temps d'exécution du programme mais je ne sais pas comment faire ni si cela résoudra mon problème.
srand(time(NULL)); puis (int)(rand()/(float)RAND_MAX * (max)+min)
pour les générer.
Mon problème est que le programme étant très petit, le premier nombre généré est toujours le même puisqu'il met le même temps pour s'exécuter à chaque fois.
J'ai rajouté un cin avec "Voulez-vous commencer?" pour temporiser le premier résultat mais ça n'a apparemment rien changé. Je suppose que le temps écoulé pendant l'attente de la réponse n'est pas pris en compte.
J'ai donc pensé à réaliser un random à partir du temps de l'ordinateur et non du temps d'exécution du programme mais je ne sais pas comment faire ni si cela résoudra mon problème.
A voir également:
- Un random spécial
- Caractere special - Guide
- Dossier spécial - Guide
- Symbole special - Guide
- Ecriture special instagram - Guide
- Ecriture special facebook - Guide
1 réponse
"le premier nombre généré est toujours le même puisqu'il met le même temps pour s'exécuter à chaque fois."
Ce n'est pas comme ça que ça fonctionne, c'est basé sur la valeur donné en paramètre de srand(unsigned int) qui dépend donc de l'heure à laquelle l'instruction time(NULL) a été exécuté, et pas au temps écoulé entre le srand() et le rand().
Je pense que l'erreur est dans ton /(float)RAND_MAX
Essaye plutôt : rand()%(max-min)+minLa confiance n'exclut pas le contrôle
Ce n'est pas comme ça que ça fonctionne, c'est basé sur la valeur donné en paramètre de srand(unsigned int) qui dépend donc de l'heure à laquelle l'instruction time(NULL) a été exécuté, et pas au temps écoulé entre le srand() et le rand().
Je pense que l'erreur est dans ton /(float)RAND_MAX
Essaye plutôt : rand()%(max-min)+minLa confiance n'exclut pas le contrôle
Si tu veux faire entre "min" inclus et "max" inclus, il faut faire rand()%(max+1-min)+min
Merci, j'ai un peu de mal à réfléchir un dimanche soir x)