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

edit2:この他の質問には、あなたの問題に対するc++ 11の解決策があるはずです(@R. Martinho Fernandesの回答を見てください)

于 2013-01-10T18:14:40.437 に答える