我试图封装一个类来生成由种子和随机值范围控制的随机数。我想从我的代码的不同部分调用这个类,使用不同的范围,但使用相同的种子。
按照其他帖子的建议(C++-11 中使用 boost 封装的随机数生成器)我实现了以下代码:
我的随机数生成器类:
#include <random>
#include <iostream>
typedef std::mt19937 ENG; // Mersenne Twister
typedef std::uniform_int_distribution<> iDIST; // Uniform Integer Distribution
class RNG {
private:
ENG eng;
iDIST idist;
public:
iDIST::result_type igen() { return idist(eng); }
RNG(ENG eng_,int imin,int imax)
: idist(imin,imax)
{eng = eng_; }
};
Run Code Online (Sandbox Code Playgroud)
创建 RNG 类对象并打印随机值的函数:
void myfunc(ENG eng_,int imin, int imax, int N){
RNG myirn(eng_,imin,imax);
for (int i = 0; i < N; i++){
std::cout << myirn.igen() << std::endl;
}
return; …Run Code Online (Sandbox Code Playgroud)