6
double get_random(double min, double max) {
  /* Returns a random double between min and max */

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

これは、最小値と最大値の間でランダムな double を生成する私の機能です。ただし、 を呼び出すとget_random(-1.0, 1.0);、-2.0 から -1.0 の間の値が取得されます。

私が間違っていることと、それを修正する方法について何か考えはありますか?

4

2 に答える 2

21

式であってはならない

(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式全体がand min + (max-min)-ie minandの間の乱数を返しmaxます。
于 2012-05-27T18:01:50.387 に答える
1

これを使用して、ランダムな double または浮動小数点数を生成できます。

((double) rand()*(max-min)/(double)RAND_MAX-min);
于 2013-06-24T03:05:22.983 に答える