(質問を言い換えました)
ブースト正規分布のラッパー クラスを作成していますが、できるだけ効率的にしたいと考えています。
私が使用する場合:
double x = 0.0;
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > var_nor(rng, nd);
for (int i=0; i<20; i++) {
double x = var_nor();
}
ループは正常に動作します。私の懸念は、メソッドが何度も呼び出されるため、不必要に何かを宣言したくないということです。コードを分割して、次の行をコンストラクターに入れてみました。
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > var_nor(rng, nd);
これを行うサンプルメソッドがあります:
double x = var_nor();
return x;
しかし、この場合、var_nor() (つまり、引数なし) が見つからないというエラーが表示されます。これらのブースト宣言で何が起こっているのか誰か教えてください。は何をしますか
boost:variate_generate など
行は実際にvar_norで行いますか? 私の限られた C++ の知識では、var_nor が 2 つの異なる署名で定義されているように見えます。
みんなありがとうピート