我目前正在寻找新的c++11
random
图书馆。为简化起见,我创建了以下类
class my_rand {
private:
std::mt19937_64 eng;
public:
my_rand() {
std::array<int, std::mt19937::state_size> seed_data;
std::random_device rd;
std::generate_n(seed_data.data(), seed_data.size(), std::ref(rd));
std::seed_seq seq(std::begin(seed_data), std::end(seed_data));
this->eng.seed(seq);
};
unsigned long long operator() () {
return this->eng();
};
};
这样我就可以只做my_rand rand;
一次然后反复调用rand()
以生成随机数。
但是,现在我想使用std::uniform_int_distribution
绑定到我得到的数字。在创建对象时指定边界是显而易见的,因此调用保持不变。问题是,如果我添加私有成员(类似std::uniform_int_distribution<long long> uid;
),那么稍后在构造函数中我将无法设置边界,因为uid
它已经被初始化。我找不到std::uniform_int_distribution
在创建后允许设置限制的方法。
我很可能在这里遗漏了一些要点,因此在此先感谢您的帮助。