double get_random(double min, double max) {
/* Returns a random double between min and max */
return min * ((double) rand() / (double) RAND_MAX) - max;
}
这是我在最小和最大之间产生随机双打的功能。但是,当我调用get_random(-1.0, 1.0);
时,我得到的值介于-2.0和-1.0之间。
我知道我做错了什么以及如何解决它?
答案 0 :(得分:17)
公式不应该是
(max - min) * ( (double)rand() / (double)RAND_MAX ) + min
(double)rand() / (double)RAND_MAX
会在0
和1
(max - min) * ( (double)rand() / (double)RAND_MAX )
会在0
和max - min
之间返回一个随机数。0 + min
和min + (max-min)
之间的随机数 - 即min
和max
。答案 1 :(得分:1)
您可以使用它来生成随机双数或浮点数:
((double) rand()*(max-min)/(double)RAND_MAX-min);