以变​​化的间隔生成随机整数

时间:2020-07-11 09:49:40

标签: c++ random

我们可以使用std::uniform_int_distribution在特定间隔内生成随机数。但是,对于我的仿真,我需要在每次迭代中使用均匀分布的随机整数,并且时间间隔取决于上一次迭代的结果。我已经知道一些技巧(like these)可用于从较大的间隔中产生整数的均匀/近乎均匀的分布,但是有没有标准或推荐的“ post-c ++ 11ish”这样做的方式?

我知道可以在每次迭代中创建一个新的uniform_int_distribution对象。这种方法是否有任何隐藏的警告或陷阱?似乎分发对象确实具有某种内部状态,因此我有点担心使用新的分发对象生成单个随机数可能会有一些缺点或不利的特征,这些特征对我来说并不明显。

1 个答案:

答案 0 :(得分:3)

创建uniform_int_distribution应该很便宜,但是如果您担心,可以在使用重载调用时提供临时分发参数:

result_type operator()( Generator& g, const param_type& params );