使用给定平均值在二项分布上生成整数

时间:2012-08-07 18:02:31

标签: random statistics

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

这些是事件,所以我们只处理整数。当然,分配并不一定是完美的。只是比每天持续每秒N次更真实的东西。

两个问题:

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

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

谢谢!

1 个答案:

答案 0 :(得分: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