#include <vector>
#include <random>
using namespace std;
int main()
{
vector<int> coll{1, 2, 3, 4};
shuffle(coll.begin(), coll.end(), random_device{});
default_random_engine dre{random_device{}()};
shuffle(coll.begin(), coll.end(), dre);
}
问题1:两者有什么区别?
shuffle(coll.begin(), coll.end(), random_device{});
和
shuffle(coll.begin(), coll.end(), dre);
?
default_random_engine
是实现定义的 - 这意味着您需要阅读平台文档以查看您正在获取哪个生成器。还有其他标准指定的生成器,请参见:http://en.cppreference.com/w/cpp/numeric/random 建议不要使用default_random_engine
,除非您想要特定于平台的行为。 - Richard Critten