Double aléatoire entre min et max
double get_random(double min, double max) {
/* Returns a random double between min and max */
return min * ((double) rand() / (double) RAND_MAX) - max;
}
C'est ma fonction pour générer des doubles entre un min et un max. Cependant, quand je l'appelle get_random(-1.0, 1.0);
, j'obtiens des valeurs entre -2.0 et de -1.0.
Aucune idée de ce que je fais mal et comment je peux résoudre ce problème?
(rand/RAND_MAX) génère un nombre compris entre 0.0 et 1.0. Afin de mettre ces deux extrêmes, dans le reste de l'équation, et vous devriez voir pourquoi ça ne marche pas.
voir: stackoverflow.com/questions/686353/c-random-float
voir: stackoverflow.com/questions/686353/c-random-float
OriginalL'auteur David Gomes | 2012-05-27
Vous devez vous connecter pour publier un commentaire.
Ne devrait pas la formule de la
(double)rand() /(double)RAND_MAX
retourne un nombre aléatoire entre0
et1
(max - min) * ( (double)rand() /(double)RAND_MAX )
retourne un nombre aléatoire entre0
etmax - min
.0 + min
etmin + (max-min)
- c'est à diremin
etmax
.<random>
(si disponible) pour plus de qualité aléatoire en double.OriginalL'auteur Luchian Grigore
Vous pouvez l'utiliser pour générer de l'aléatoire en double ou de nombres flottants:
Je suis d'accord avec @jogojapan, et la finale
-min
est la seule différence par rapport à la accepté de répondre à de+min
(aussi loin que je peux voir), donc cette réponse est fausse.OriginalL'auteur user2514807