我需要一些关于随机性算法的帮助。所以问题是。
在 8 小时内将发生 50 个事件。事件可以随机发生。现在这意味着每秒发生事件的机会是 50/(8*60*60)= .001736。如何使用随机生成算法做到这一点?
我可以得到随机数
int r = rand();
double chance = r/RAND_MAX;
if(chance < 0.001736)
then event happens
else
no event
但大多数时候 rand() 返回 0 和 0<0.001736 并且我得到的事件比需要的多。
有什么建议么?
抱歉,我忘了提到我计算的机会是双重机会 = (static_cast)(r) / (static_cast)(RAND_MAX);
它从 static_cast 中删除了 double
双倍机会 = (double)r/(double)(RAND_MAX);