将boost随机数生成器合并为类变量 [英] Incorporating boost random number generator as a class variable
本文介绍了将boost随机数生成器合并为类变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
I'm trying to create a wrapper class for the boost random number generator, based on http://www.sitmo.com/article/generating-random-numbers-in-c-with-boost/. The problem is that boost uses templates and I don't know how to separate the declaration of GEN gen
from the instantiation, like what can be done with separating DIST dist
from dist = DIST(0, 1)
. Any advice appreciated.
fr.hpp:
#include <boost/random/variate_generator.hpp>
#include <boost/generator_iterator.hpp>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/normal_distribution.hpp>
class FR {
private:
typedef boost::mt19937 ENG; // Mersenne Twister
typedef boost::normal_distribution<double> DIST; // Normal Distribution
typedef boost::variate_generator<ENG,DIST> GEN; // Variate generator
ENG eng;
DIST dist;
GEN gen;
public:
FR();
};
fr.c:
#include "fr.hpp"
FR::FR() {
dist = DIST(0, 1);
gen = GEN(eng, dist);
}
无法编译的
$ g++ -O3 -ggdb3 -Wall -c fr.cpp
fr.cpp: In constructor ‘FR::FR()’:
fr.cpp:3: error: no matching function for call to ‘boost::random::variate_generator<boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>, boost::random::normal_distribution<double> >::variate_generator()’
等
推荐答案
boost :: variate_generator
没有 初始化列表 :
FR::FR()
: dist(0,1), gen(eng,dist)
{}
这篇关于将boost随机数生成器合并为类变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文