我想使用random
库在C ++中编写一个运行时随机数生成器类。
#include <iostream>
#include <random>
class RandomGen {
private:
std::random_device _rd;
std::mt19937 _rng;
std::uniform_int_distribution<int> _uni_dist;
public:
RandomGen(int min, int max) : _rd(), _rng(_rd()), _uni_dist(min, max) {}
int spit() { return _uni_dist(_rng);}
};
int main() {
RandomGen rgen(0x00, 0xff);
for (unsigned i=0; i<10; ++i) {
std::cout << rgen.spit() << std::endl;
}
getchar();
return 0;
}
我正在针对Win32机器在linux-ubuntu VM中交叉编译它。
这是编译命令:i686-w64-mingw32-g++ -Wall -Werror -std=c++17 -m32 -s -static-libstdc++ -static-libgcc test.cpp -o test.exe
问题在于,每次执行程序时,生成器都会生成相同的数字序列,就像在编译时已经预先确定了数字一样。
如何使其每次执行时生成不同的数字?