Boost库-不生成不同的随机数
Boost library- not generating distinct random numbers
我使用以下代码并在循环中调用它,这样我就可以为我的完美哈希函数获得多个随机数。但它给了我相同的数字,而不是不同的。"min"接收0或1,而max接收"p-1"。其中p是大于哈希表大小的素数。
long long int generateSingleRandomNo2(long long int min, long long int max)
{
typedef boost::uniform_int<long long int> NumberDistribution;
typedef boost::mt19937 RandomNumberGenerator;
typedef boost::variate_generator<RandomNumberGenerator&,NumberDistribution> Generator;
NumberDistribution distribution(min,max);
RandomNumberGenerator generator;
Generator numberGenerator(generator, distribution);
generator.seed(time(0)); // seed with the current time
long long int A=numberGenerator();
return A;
/*if(A>min)
return A ;
else
generateSingleRandomNo1(min,max);*/
}
要获得不同的随机数,只需要调用seed(...)
一次。一个可能的解决方案是使用静态RandomNumberGenerator实例:
long long int generateSingleRandomNo2(long long int min, long long int max)
{
struct RandomNumberGenerator : public boost::mt19937 {
RandomNumberGenerator() {
seed(time(NULL)); // seed with the current time
}
};
typedef boost::uniform_int<long long int> NumberDistribution;
typedef boost::variate_generator<RandomNumberGenerator&,NumberDistribution> Generator;
// static generator instance
static RandomNumberGenerator generator;
// generate random number
NumberDistribution distribution(min, max);
Generator numberGenerator(generator, distribution);
long long int A = numberGenerator();
return A;
/*if(A>min)
return A ;
else
generateSingleRandomNo1(min,max);
*/
}
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- boost::进程间消息队列引发错误
- 整数不会重复超过随机数
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 如何通过Boost获得0.5增量的随机数
- 使用Boost分隔接口和随机数生成器类的实现
- 有关使用 boost 生成正常随机数的问题
- 使用boost::random跨平台生成一致的随机数
- 将boost用于长二重的(伪)随机数生成器
- 使用boost生成介于1和9999之间的随机数
- Boost库-不生成不同的随机数
- boost c++正在使用Mersenne Twister算法生成0到1之间的相同随机数
- 可以在运行时选择不同的Boost伪随机数生成器
- 二维数组和boost随机数生成器
- 为什么 boost 的随机数生成(在正态分布上)总是给出相同的值?
- c++ -11中使用boost封装的随机数生成器
- C++-Boost:获取相同的随机数.播种似乎不起作用
- 如何让Boost::random和Matlab产生相同的随机数
- 如何使用boost多精度生成正常的随机数