最小和最大之间的随机双倍

时间:2012-05-27 17:57:41

标签: c++ random

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之间。

我知道我做错了什么以及如何解决它?

2 个答案:

答案 0 :(得分:17)

公式不应该是

(max - min) * ( (double)rand() / (double)RAND_MAX ) + min
  • (double)rand() / (double)RAND_MAX会在01
  • 之间返回一个随机数
  • (max - min) * ( (double)rand() / (double)RAND_MAX )会在0max - min之间返回一个随机数。
  • 整个表达式将返回0 + minmin + (max-min)之间的随机数 - 即minmax

答案 1 :(得分:1)

您可以使用它来生成随机双数或浮点数:

((double) rand()*(max-min)/(double)RAND_MAX-min);