【发布时间】:2016-08-09 08:43:17
【问题描述】:
我有一堆关于随机引擎和分布、它们的成本和交互的问题:
-
std::random_device是一个昂贵的(重构造的)对象吗?如果可能,我应该只为我的应用创建一个吗? -
RandomNumberDistribution对象是昂贵的对象还是主要依赖于具体的分布?在我看来,例如uniform_int_distribution应该是包含分布范围[min, max]的非常轻的对象,并且可能是(?)某种内部状态。 -
random_device、random_engine和distribution之间的交互如何在下面的代码中工作:std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> distr(1, 10); auto random_value = distr(gen);
最后一行发生了什么?分发从随机引擎获取下一个值,然后将其带到所需的范围[0, 10]?总是很明显,某些对象的内部状态应该在调用后修改:肯定是random_device、random_engine,但uniform_int_distribution 是否也有一些内部状态?
【问题讨论】:
-
每个问题一个问题,请。不是四个。
-
在
<random>上进行一些简单的阅读。很好的参考,有很好的例子 -
但这些问题是相关的