C++ 用模板增强随机性

C++ 用模板增强随机性,c++,boost,boost-random,C++,Boost,Boost Random,所以我尝试使用Boost.Random mt19937生成器和模板。我的C++有点生疏,但是从我所理解的(和文档一样,总是为Boost,不小于模糊),它应该采取模板参数,指定它的返回类型(浮点/ double)。 我现在不知道问题在哪里。。。它全部使用或工作,并停止使用模板 代码如下: template <class T> class SpikingMatrixHelper { public: SpikingMatrixHelper(const int seed);

所以我尝试使用Boost.Random mt19937生成器和模板。我的C++有点生疏,但是从我所理解的(和文档一样,总是为Boost,不小于模糊),它应该采取模板参数,指定它的返回类型(浮点/ double)。 我现在不知道问题在哪里。。。它全部使用
工作,并停止使用模板

代码如下:

template <class T>
class SpikingMatrixHelper {
public:
    SpikingMatrixHelper(const int seed);
    T generateNumber(const T, const T) const;
private:
    boost::mt19937 gen;
};

template <class T>
SpikingMatrixHelper<T>::SpikingMatrixHelper(const int seed) : gen(seed) {}

template <class T>
T SpikingMatrixHelper<T>::generateNumber(const T min, const T max) const {
    boost::uniform_real<T> dist(min, max);
    boost::variate_generator<boost::mt19937&, boost::uniform_real<T> > g(gen, dist);
    return g();
}

正如我所说,自从我完成C++以来,已经有一段时间了,Boost DOC留下了许多值得索取的东西,所以任何提示都值得欣赏……< /P> < P>代码> GuangNo.No/<代码>不能是代码> const ——它置换了MelShanne Wistor。使该

可变
,或使函数非
常量

模板编译器错误!=可读信息-容易错过
/path/ [line] error: no matching function for call to ‘boost::variate_generator<boost::random::mersenne_twister<unsigned int, 32, 624, 397, 31, 2567483615u, 11, 7, 2636928640u, 15, 4022730752u, 18, 3346425566u>&, boost::uniform_real<double> >::variate_generator(const mt19937&, boost::uniform_real<double>&)’
/path/ [line] note: candidates are:
/usr/include/boost/random/variate_generator.hpp:133:3: note: boost::variate_generator<Engine, Distribution>::variate_generator(Engine, Distribution) [with Engine = boost::random::mersenne_twister<unsigned int, 32, 624, 397, 31, 2567483615u, 11, 7, 2636928640u, 15, 4022730752u, 18, 3346425566u>&, Distribution = boost::uniform_real<double>]
/usr/include/boost/random/variate_generator.hpp:133:3: note:   no known conversion for argument 1 from ‘const mt19937 {aka const boost::random::mersenne_twister<unsigned int, 32, 624, 397, 31, 2567483615u, 11, 7, 2636928640u, 15, 4022730752u, 18, 3346425566u>}’ to ‘boost::random::mersenne_twister<unsigned int, 32, 624, 397, 31, 2567483615u, 11, 7, 2636928640u, 15, 4022730752u, 18, 3346425566u>&’
/usr/include/boost/random/variate_generator.hpp:114:7: note: boost::variate_generator<boost::random::mersenne_twister<unsigned int, 32, 624, 397, 31, 2567483615u, 11, 7, 2636928640u, 15, 4022730752u, 18, 3346425566u>&, boost::uniform_real<double> >::variate_generator(const boost::variate_generator<boost::random::mersenne_twister<unsigned int, 32, 624, 397, 31, 2567483615u, 11, 7, 2636928640u, 15, 4022730752u, 18, 3346425566u>&, boost::uniform_real<double> >&)
/usr/include/boost/random/variate_generator.hpp:114:7: note:   candidate expects 1 argument, 2 provided