在 Stephan T. Lavavej 的演讲之后(请参阅此处),我正在使用 Mersenne Twister 随机数生成器,并使用这种代码生成随机数
#include <iostream>
#include <random>
int main()
{
std::mt19937 mt(132);
std::uniform_int_distribution<int> dist(0,50);
for (int i =0;i<10;i++)
{
std::cout << dist(mt) << std::endl;
}
}
我想使用shuffle
function (而不是random_shuffle
) 函数来洗牌(再次在谈话中推荐)。从cppreference.com,我看到该函数需要一个URBG&&
作为参数。
我真的不明白 aURBG
是什么。我试着喂它mt19937
,它似乎工作正常。
#include <iostream>
#include <random>
int main()
{
std::vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
std::mt19937 mt(132);
std::shuffle(v.begin(),v.end(),mt);
for (int i=0;i<v.size();i++)
{
std::cout << v[i] << std::endl;
}
}
问题
- 什么是
URBG
? 是mt19937
的子类URBG
吗? - 作为任何函数的参数给出的所有类型的随机数生成器都可以产生随机结果(例如
rand
,shuffle
或来自 的任何函数random.h
)吗?