1

可能重复:
为什么我总是用 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;
}

它产生范围内的整数,但它产生的值序列每次都是相同的 - 不是很随机。为什么?

4

1 回答 1

2

一般来说,伪随机生成器需要一个种子。

如果您从不更改种子,您将始终获得相同的伪随机输出/序列。

编辑:我坚持使用伪随机这个词(有时是伪混沌)而不是滥用random

编辑2:在另一个问题中应该有 c++11 解决您的问题(查看@R. Martinho Fernandes 的回答)

于 2013-01-10T18:14:40.437 回答