私のプログラムでは、ランダムな double を繰り返し (何百万回も) 生成する必要があり、分布がフラットで範囲が異なる変数がいくつかあります。現在、これは私がしていることです:
double w, v, k;
double wmax = 0.5;
double vmax = 1.0;
std::random_device rd;
std::default_random_engine dre(rd());
std::uniform_real_distribution<double> wRand(-wmax, wmax);
std::uniform_real_distribution<double> vRand(-vmax, vmax);
std::uniform_real_distribution<double> kRand(0.0, 1.0);
w = wRand(dre);
v = vRand(dre);
k = kRand(dre);
これは適切な方法ですか、または 1 つの分布を持ち、そこからすべての数値を構築する方が良いですか? 私はパフォーマンスの問題に非常に注意を払っており、1 つのディストリビューションと 2 つの算術演算を行う方が速いと感じています。しますか?そのような場合の乱数の比較品質はどうですか?