我正在尝试创建一个随机数生成器对象,该对象将在应用程序的生命周期内存在。我希望有一个名为 number_generator() 的公共接口函数,它在调用时应该返回一个随机数。
请注意,下面的 main() 函数编译得很好,产生了很好的随机数,但在底部是我无法工作的类:
#include <boost/random.hpp>
#include <iostream>
#include <ctime>
int main(int c, char** argv)
{
// Define a uniform random number distribution of integer values between MIN and MAX
const int MIN = 1;
const int MAX = 2147483648;
typedef boost::uniform_int<> distribution_type;
typedef boost::variate_generator<boost::mt19937&, distribution_type> gen_type;
distribution_type dist(MIN, MAX);
boost::mt19937 gen;
gen_type number_generator(gen, dist);
gen.seed(static_cast<unsigned int>(std::time(0))); // seed with the current time
// output random ints
for (int i=0; i<50; i++)
std::cout << number_generator() << std::endl;
}
这是问题所在,由于 C++ 知识有限,我无法获得 number_generator() 的公共接口:
#ifndef _random_generator_H_
#define _random_generator_H_
#include <boost/thread/thread.hpp>
#include <boost/random.hpp>
#include <ctime>
class random_generator
{
public:
random_generator() /* : MIN(1), MAX(2147483648)*/
{
distribution_type dist(MIN, MAX);
boost::mt19937 gen;
gen_type number_generator(gen, dist);
gen.seed(static_cast<unsigned int>(std::time(0))); // seed with the current time
}
private:
// define a uniform random number distribution of integer values between MIN and MAX
int MIN;
int MAX;
typedef boost::uniform_int<> distribution_type;
typedef boost::variate_generator<boost::mt19937&, distribution_type> gen_type;
};
#endif
谢谢!