Je sais que la question est assez simple, mais je ne suis pas très bon en maths.
Je sais comment générer un float aléatoire entre 0 et 1:
float random = ((float) Rand()) / (float) Rand_MAX;
Exemple:
RandomFloat( 0.78, 4.5 ); //Could return 2.4124, 0.99, 4.1, etc.
float RandomFloat(float a, float b) {
float random = ((float) Rand()) / (float) Rand_MAX;
float diff = b - a;
float r = random * diff;
return a + r;
}
Cela fonctionne en retournant a
plus quelque chose , où quelque chose est compris entre 0 et b-a
, ce qui fait que le résultat final se situe entre a
et b
.
float RandomFloat(float min, float max)
{
// this function assumes max > min, you may want
// more robust error checking for a non-debug build
assert(max > min);
float random = ((float) Rand()) / (float) Rand_MAX;
// generate (in your case) a float between 0 and (4.5-.78)
// then add .78, giving you a float between .78 and 4.5
float range = max - min;
return (random*range) + min;
}
Supposons que vous avez MIN_Rand et MAX_Rand définissant les plages, alors vous pouvez avoir les éléments suivants:
const float MIN_Rand = 2.0, MAX_Rand = 6.0;
const float range = MAX_Rand - MIN_Rand;
float random = range * ((((float) Rand()) / (float) Rand_MAX)) + MIN_Rand ;
Cela vous fournira le nombre mis à l'échelle à votre gamme préférée . MIN_Rand, MAX_Rand peut être n'importe quelle valeur, comme par exemple 2,5, 6,6 Donc, la fonction pourrait être:
float RandomFloat(float min, float max) {
return (max - min) * ((((float) Rand()) / (float) Rand_MAX)) + min ;
}
Aléatoire entre 2 float:
float random_between_two_int(float min, float max)
{
return (min + 1) + (((float) Rand()) / (float) Rand_MAX) * (max - (min + 1));
}
Aléatoire entre 2 int:
int random_between_two_int(float min, float max)
{
return Rand() % (max - min) + min + 1;
}