使用Boost库生成非常大的随机数

时间:2014-09-05 15:05:50

标签: c++ boost random

我正在使用boost库在[0-2 ^ 32-1]范围内生成非常大的随机数。但是升级库在这个范围内效果不佳。它只显示错误消息"断言失败min_arg< = max_arg" 请帮助我!这是代码:

#include <iostream>
#include <ctime>
#include <cmath> 
#include "boost/random.hpp" 
#include <stdint.h>
using namespace std; 
int main() 
{ 
long double rangeMin = 0; 
long long int  rangeMax = (pow(2.0,32.0)-1); 
typedef boost::uniform_int<> NumberDistribution; 
typedef boost::mt19937 RandomNumberGenerator; 
typedef boost::variate_generator<RandomNumberGenerator&, 
                               NumberDistribution> Generator; 

NumberDistribution distribution(rangeMin, rangeMax); 
RandomNumberGenerator generator; 
Generator numberGenerator(generator, distribution); 
generator.seed(time(0)); // seed with the current time 

cout << numberGenerator() <<endl; 
return 0;

}

1 个答案:

答案 0 :(得分:4)

根据documentationboost::uniform_int的模板参数的默认值为int。如果您想生成long long int,则需要使用boost::uniform_int<long long int>