double get_random(double min, double max) {
/* Returns a random double between min and max */
return min * ((double) rand() / (double) RAND_MAX) - max;
}
That’s my function to generate random doubles between a min and a max. However, when I call get_random(-1.0, 1.0);, I get values between -2.0 and -1.0.
Any idea of what I’m doing wrong and how I can fix it?
Shouldn’t the formula be
(double)rand() / (double)RAND_MAXreturns a random number between0and1(max - min) * ( (double)rand() / (double)RAND_MAX )returns a random number between0andmax - min.0 + minandmin + (max-min)– i.e.minandmax.