1
http://www.sitmo.com/article/generating-random-numbers-in-c-with-boost/을 기반으로 부스트 난수 생성기에 대한 래퍼 클래스를 만들려고합니다. 문제는 boost가 템플릿을 사용하고 있으며 GEN gen
이라는 선언을 인스턴스화에서 분리하는 방법을 모르겠다. DIST dist
을 dist = DIST(0, 1)
으로 분리하는 것과 같이 할 수있다. 어떤 조언도 감사합니다.부스트 난수 생성기를 클래스 변수로 통합
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()’
등
나에게 보인다는><향상에 이중이 필요합니다 :: normal_distribution 어쩌면 부스트 : normal_distribution를 시도하지 말아 –
madnut