ランダム浮動小数点数生成 質問する

ランダム浮動小数点数生成 質問する

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

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

ベストアンサー1

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


これにより、0.0 から 1.0 までの数値が生成されます。

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

これにより、0.0 から任意の数値が生成されますfloatX

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()。これは、 を呼び出すたびに 1 回ではなく、プログラムの実行中に 1 回実行する必要がありますrand()。これは通常、次のように行われます。

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

randまたは に電話するには、srandをする必要があります#include <cstdlib>

を呼び出すにはtime、 する必要があります#include <ctime>

おすすめ記事