1

我正在编写代码来创建模拟行为。作为其中的一部分,我知道我想每分钟模拟 X 个事件。我不想每秒只做 x/60 个事件。相反,我想将这些事件分布在最终平均为 x/60 的二项分布中。

这些是事件,所以我们只处理整数。当然,分发不一定是完美的。只是比全天一致的 N-per-second-every-second-all 更现实的东西。

两个问题:

1)是否有任何伪代码或公式可以帮助我更好地计算这些数据集,而不仅仅是我自己在 excel 中的调整?

2) 是否有任何我误用的术语(可能全部)可以帮助我更好地找到答案?

谢谢!

4

1 回答 1

0

您(可能)实际上要求泊松过程(不是二项式)-当每单位时间发生事件的概率一致时出现的分布。这种分布在排队论中出现了很多,所以那里的参考资料可以提供帮助。

生成这些最简单的方法是生成事件之间的时间间隔:

generate_time_interval_in_seconds( X=mean_events_per_minute )
    dt=-(60.0/X)*log( random_number_generator() )
    return dt 

random_number_generator()在 中返回一个伪随机数0-1。取-log(.)它会产生一个呈指数分布的随机数,其平均值为1。缩放这个60.0/X给我们一个指数分布的变量,其平均值是事件之间的平均间隔。

然后确定这一分钟发生了多少次:

count=0
T=generate_time_interval_in_seconds(X)
while( T<60.0)
   ++count
   T+=generate_time_interval_in_seconds(X)
return count
于 2012-08-08T22:01:23.350 回答