我正在使用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;
}
答案 0 :(得分:4)
根据documentation,boost::uniform_int
的模板参数的默认值为int
。如果您想生成long long int
,则需要使用boost::uniform_int<long long int>
。