Я пытаюсь создать вектор форсированных генераторов случайных чисел.
Я попытался создать указатели на функции variate_generators, но без особой удачи.
#include <iostream>
#include <boost/random.hpp>
using namespace std;
int main(int argc, const char *argv[])
{
const double mean = 0.0;
const double sigma = 1.0;
// Setup aliases
typedef boost::normal_distribution<> NormalDistribution;
typedef boost::mt19937 RandomNumberGenerator;
typedef boost::variate_generator<RandomNumberGenerator&, NormalDistribution> NormalGenerator;
vector<NormalGenerator> gen_vec;
RandomNumberGenerator rng;
rng.seed(12345);
NormalDistribution noise_distribution(mean, sigma);
NormalGenerator rng_eng(rng, noise_distribution); // create RNG
gen_vec.push_back(rng_eng);
return 0;
}
Я надеялся использовать gen_vec, чтобы получить функцию, чтобы сгенерировать случайное число для данногоэлемент в векторе.Но когда я пытаюсь скомпилировать, он выдает эту ошибку.
/usr/include/boost/random/detail/pass_through_engine.hpp:27: error: non-static reference member \u2018main(int, const char**)::RandomNumberGenerator& boost::random::detail::pass_through_engine<main(int, const char**)::RandomNumberGenerator&>::_rng\u2019, can't use default assignment operator
Я предполагаю, что это потому, что я неправильно упаковываю variate_generators.
Это то, что я пытаюсь сделать правильногораздо меньше возможно?