1. ホーム
  2. c++

[解決済み】浮動小数点数の乱数生成

2022-01-26 14:42:30

質問内容

C++でランダムな浮動小数点数を生成するにはどうしたらいいですか?

整数のrandを何かで割ればいいと思ったのですが、それで十分なのでしょうか?

どのように解決するのですか?

rand() は、C++で擬似乱数を生成するために使用することができます。 との組み合わせで RAND_MAX と少しの計算で、任意の間隔で乱数を発生させることができます。 学習用やおもちゃのプログラムにはこれで十分です。 もし 本当に 正規分布の乱数であれば、より高度な方法を採用する必要があります。


これは、0.0から1.0までの数字を生成します。

float r = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);

これは、0.0からある任意の数値まで生成します。 float , X :

float r2 = static_cast <float> (rand()) / (static_cast <float> (RAND_MAX/X));

これは、ある任意の LO から任意の HI :

float r3 = LO + static_cast <float> (rand()) /( static_cast <float> (RAND_MAX/(HI-LO)));


ただし rand() 関数は、本当に乱数が必要な場合には、十分でないことが多いでしょう。


を呼び出す前に rand() を呼び出すことで、乱数生成器をシードする必要があります。 srand() . この作業は、プログラムの実行中に一度だけ行う必要があります。 rand() . これはよくこんな風に行われます。

srand (static_cast <unsigned> (time(0)));

を呼び出すために rand または srand しなければならない #include <cstdlib> .

を呼び出すために time を使用する必要があります。 #include <ctime> .