gpt4 book ai didi

c++ - 将 boost 随机数生成器合并为类变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:11 25 4
gpt4 key购买 nike

我正在尝试基于 http://www.sitmo.com/article/generating-random-numbers-in-c-with-boost/ 为 boost 随机数生成器创建一个包装类.问题是 boost 使用模板,我不知道如何将 GEN gen 的声明与实例化分开,就像将 DIST distdist = 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()’

等等

最佳答案

boost::variate_generator 没有 default constructor ,因此您需要使用构造函数的 initialization list :

FR::FR()
: dist(0,1), gen(eng,dist)
{}

关于c++ - 将 boost 随机数生成器合并为类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com