【问题标题】:Generate random integers in changing intervals以变​​化的间隔生成随机整数
【发布时间】:2020-07-11 09:49:40
【问题描述】:

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

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

【问题讨论】:

  • 我不知道创建新发行版是否有任何开销。您可以更改现有分布的范围,请参阅此答案:stackoverflow.com/a/28328983/12463032
  • @TedLyngmo - 如果你想这样做,你的评论可以作为答案 - 我完全错过了超载

标签: c++ random


【解决方案1】:

uniform_int_distribution 的创建成本应该很低,但如果您担心,可以在使用重载调用它时提供临时分布参数:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多