【发布时间】: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