(改写问题)
我正在创建一个用于提升正态分布的包装类,并希望使其尽可能高效。
如果我使用:
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 是用两个不同的签名定义的。
谢谢大家皮特