【问题标题】:In C++, How Can I Generate A Random Number Based Off Of A Double Value Probability?在 C++ 中,如何根据双值概率生成随机数?
【发布时间】:2015-03-20 20:36:18
【问题描述】:

我有一个事件发生的概率应该是 0.5%(不是很频繁)。

如何根据这个概率生成随机数?

这样就足够了,我不相信,因为 srand 返回一个整数......

double rate = 0.05;
if((srand() % 100) < rate)
{
    std::cout << "Event Occurred" << endl;
}

【问题讨论】:

  • srand 不生成随机数; rand 会。
  • @MatthewMoss 的重复是正确的,但想补充一点,诀窍是记住 0.05% 的概率相当于说 5/10000 的概率。换句话说,您只需要适当地缩放您的值,以便一切都是整数。
  • 那个副本的答案很糟糕。
  • 从 C++11 开始,您通常希望使用 uniform_int_distribution 之类的东西来将数字放入一个范围内。如果您的编译器足够老,它不包含它,那么至少有 other answers 告诉如何正确地执行该部分。

标签: c++ probability


【解决方案1】:
std::mt19937 rng(std::random_device{}());
std::bernoulli_distribution d(0.005);
bool b = d(rng); // true 0.5% of the time; otherwise false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2017-12-20
    • 2016-04-29
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多