【发布时间】:2013-01-10 18:10:50
【问题描述】:
可能重复:
Why do I always get the same sequence of random numbers with rand()?
我尝试为给定范围内的随机整数实现以下生成器类:
class RandomInteger {
protected:
std::default_random_engine randomEngine;
std::uniform_int_distribution<> distribution;
public:
RandomInteger(int64_t lower, int64_t upper);
virtual ~RandomInteger();
virtual int64_t generate();
};
RandomInteger::RandomInteger(int64_t lower, int64_t upper) : distribution(lower, upper) {
}
RandomInteger::~RandomInteger() {
// TODO Auto-generated destructor stub
}
int64_t RandomInteger::generate() {
int64_t i = this->distribution(this->randomEngine);
return i;
}
它产生范围内的整数,但它产生的值序列每次都是相同的 - 不是很随机。为什么?
【问题讨论】:
-
你能把你设置种子的代码贴出来吗?
-
@honk 我猜没有,这将是问题所在。
-
// TODO Auto-generated destructor stub任何自动生成的对你来说都是一种伤害…… -
@ildjarn 这是 Eclipse CDT。为什么它是一种伤害?
-
因为拥有一个用户声明的析构函数会改变你的类型的琐碎性。当编译器生成的实现可以做时,永远不要声明特殊成员。