使用 auto 具有 boost::random 的分布函数
using auto for having a distribution function with boost::random
我正在尝试创建一个元组,其中我将有一个函数,该函数需要一个生成器并返回一个双精度值。
我仍然难以实现它。
到目前为止,我正在尝试使这样的行起作用:
auto g = boost::random::uniform_real_distribution<>().operator()<boost::random::mt19937>;
理想情况下,像这样使用它
#include <boost/random.hpp>
main()
{
//I want to see all boost distribution as std::function<double(boost::random::mt19937)>
auto g = boost::random::uniform_real_distribution<>().operator()<boost::random::mt19937>;
boost::random::mt19937 f(0);
double x = g(f);
}
我缺少一些东西(当然是 operator() 是模板化的事实),但我不明白为什么它不能在自动上编译。
表达式首先创建一个临时 ( boost::random::uniform_real_distribution<>()
),然后使用 .
表示法。编译器将其解释为尝试访问成员或调用该临时函数(在您的情况下operator ()
函数)。但是,函数调用缺少参数和括号,这在语法上是非法的。这就是它无法编译的原因。
无论如何,如果我正确理解您要做什么,您基本上希望有一个封装另一个对象的operator ()
函子。但是,我不明白你为什么需要一个。如果你首先有一个函子,比如boost::random::uniform_real_distribution<>
,拥有另一个只包装其operator ()
的函子是没有意义的。
你为什么不能这样做?
boost::random::uniform_real_distribution<> g;
boost::random::mt19937 f(0);
double x = g(f);
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- C++随机数分布传递给函数
- 从 C++ 函数与 Python 函数返回的不一致值用于偏斜正态分布
- 逆生存函数与正态分布的PPF(ICDF)?
- C++11 与不同类型的随机分布共享相同的函数
- 是否有在 c++ 中使用三角分布生成随机数的函数
- 带参数的累积正态分布函数的逆
- C++中对数正态分布的累积函数的逆
- Matlab - 累积分布函数 (CDF)
- 如何有效地处理不同的概率分布函数
- [C++]查找有关分布(函数)指针的错误
- 如何使用boost分布函数?平分怎么样
- 带参数的C/C++中的累积正态分布函数
- 使用 auto 具有 boost::random 的分布函数
- 返回Boost分布生成器从函数填充向量在c++中