C++ 重新初始化随机分布

C++ 重新初始化随机分布,c++,c++11,random,C++,C++11,Random,在每次下一个数字请求之前重新初始化的分发与初始化一次的方式相同,这是否合理?换句话说,这是否: std::default_random_engine generator; int p[10]={}; for (int i=0; i<nrolls; ++i) { std::uniform_int_distribution<int> distribution(0,9); int number = distribution(generator); ++p[number]; }

在每次下一个数字请求之前重新初始化的分发与初始化一次的方式相同,这是否合理?换句话说,这是否:

std::default_random_engine generator;
int p[10]={};
for (int i=0; i<nrolls; ++i) {
 std::uniform_int_distribution<int> distribution(0,9);
 int number = distribution(generator);
 ++p[number];
} 
std::默认随机引擎生成器;
int p[10]={};

对于(inti=0;i我基本上做了第一个实现所做的事情。每当我需要一个发行版时,构造一个

也就是说,是的,不同分布的行为是以特定的方式表现的

他还说,如果你不想每次都构造一个,你可以使用member函数来更改分布范围

Microsoft Channel9链接如果上述Youtube直接链接死亡(搜索30分钟):

编辑


我重新观看了几年前的一次CppCon演讲,该演讲讨论了这个确切的问题。结果是?将分布构造为局部变量,甚至在循环中。

我想起了几年前的一次CppCon演讲,该演讲处理了同一个问题;我相应地编辑了我的答案。与此相关,但分布可能具有内部状态。
std::uniform_int_distribution<int> distribution(0,9);
std::default_random_engine generator;
int p[10]={};
for (int i=0; i<nrolls; ++i) {
 int number = distribution(generator);
 ++p[number];
}