Boost のインストールが完了し、プログラムで (ようやく) 使用しています。私が欲しかったのは、生成できることでした
- 0 から 1 までのランダムに分散された数値
- 標準偏差 1 の正規分布数
私は次のヘッダーファイルでこれを達成しました:
#include <boost/random/normal_distribution.hpp>
#include <boost/random/uniform_real.hpp>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/variate_generator.hpp>
boost::mt19937 rng;
boost::normal_distribution<double> nd(0.0, 1.0);
boost::variate_generator< boost::mt19937, boost::normal_distribution<double> > normal(rng, nd);
boost::uniform_real<float> ur(0.0, 1.0);
boost::variate_generator< boost::mt19937, boost::uniform_real<float> > uniform(rng, ur);
2 つの質問があります。
- 私のアプローチは正しいですか?これまでのところ、望ましい動作が得られるという点で一貫しているように見えますが、他の人もこのようにしているようです
- 非常に大きなサンプルをシミュレートする必要があるため、10^9 をはるかに超える非常に多数の乱数が必要になります。これを達成するための、uniform() と normal() を単に呼び出すという私のアプローチよりも効率的な方法はありますか?