与えられた interval からランダムな整数を生成するために、次のクラスを作成しました[lower, upper]
。
class RandomInteger {
protected:
std::random_device randomDevice;
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) : randomEngine(this->randomDevice()), distribution(lower, upper) {
}
RandomInteger::~RandomInteger() {
// TODO Auto-generated destructor stub
}
int64_t RandomInteger::generate() {
int64_t i = this->distribution(this->randomEngine);
return i;
}
間隔が同じままで、複数の呼び出しgenerate
が行われる場合、これは問題ありません。ただし、現在、私のユースケースは、常に変化している間隔から整数を生成しています (上限は毎回増加します)。
何よりもまず、これは高速である必要があります。これは暗号化とは関係がないため、非常に擬似的な乱数で問題ありstd::random_device
ません (おそらく必要ありません)。また、可能であれば C スタイルを避けて、最新の C++11 スタイルを使用したいと考えています。
これを効率的に行う方法を提案できますか?