如何计算预期的碰撞频率

时间:2011-02-23 03:14:28

标签: datetime math statistics collision

this question的启发,提问者认为系统的用户很少会在彼此完全相同的时间采取某些行动。

鉴于我所知道的做出类似的假设,我可以保证用户可以同时做事。但是,我对如何实际计算预期的碰撞频率感到茫然。

E.g。如果我们假设每个用户每3分钟采取一次动作并且我们的计时器实际上只精确到毫秒,那么计算碰撞频率的公式是什么?

鉴于维基百科条目中的生日问题可以概括为公式 Birthday problem 其中d是180,000毫秒,p是碰撞的概率。

因此,有3位用户说,我们在任何给定的3分钟内得到2.4996E-05的概率,即发生碰撞。

那么问题就变成白天发生碰撞的可能性有多大? 在工作日中有60- * 60 * 8/3 = 9600 3分钟的时段,在任何给定的日期中发生碰撞的概率为1 - ((1-2.4996E-05)^ 9600)= 21%。事情变得很糟糕。

5 个答案:

答案 0 :(得分:2)

在3分钟内你将有180000毫秒。如果你知道用户数量,你可以使用Birthday Paradox的概率来确定碰撞的几率。

考虑到你的计时器可能不精确到毫秒,即使它可能以毫秒为单位进行测量。许多计时器基于每秒运行少于1000次的刻度。

答案 1 :(得分:1)

3分钟= 180秒= 180000.将此M称为毫秒。

你有多少用户?我们说有N.

在3分钟的时间内,用户1吞噬了一毫秒 - 一个180000免费,180000可能 - 这是180000/180000 = 1成功的机会。

接下来的家伙:179999/180000获得一个好位置的机会。 下一个人:179998/180000获得一个好位置的机会。

所有这些的机会是

 180000 * 179999 * 179998 . . .
--------------------------------
 180000 * 180000 * 180000 . . .

简而言之:

 N! / ((N^N)*(N-M)!)

答案 2 :(得分:1)

要获得碰撞频率,只需获得1 mS间隔内发生碰撞的概率,然后按比例缩放到您喜欢的任何间隔(例如乘以1000以获得每秒碰撞)。

要获得该概率,在1 mS时间间隔内获得 no 碰撞的概率?这就是在该间隔期间行动的用户数量为1或0的概率。

如果有n个用户,并且特定用户在该时间间隔内行动的概率为p,那么

P(0)=(1-p) n = 1 - np + n(n-1)p 2 / 2 - ...
P(1)= np(1-p) n-1 = np - n(n-1)p 2 + ...
P(0或1)= 1 - n(n-1)p 2 / 2 + ...
P(大于1)= n(n-1)p 2 / 2 + ...

现在插入一些数字:每3分钟一次给出p = 1.8x10 -5 ,所以碰撞的概率大约是

N(N-1)(3.24x10 -10

所以如果我的计算是正确的,如果你有100个用户,你每十分钟就会发生一次大约一次碰撞。

答案 3 :(得分:0)

这个问题的关键是知道事件发生在一个区间内的概率,并知道事件需要多长时间才能完成。然后两者的概率将是第一事件发生期间第二事件发生的概率,以第一事件的概率为条件。

现在,您可以根据Bayes Rule计算出这一点。

答案 4 :(得分:0)

CollisionFreqPercent =(AccuracySecs /(ActionDelaySecs / ConcurrentUsers))* 100;

例如:

1 user =(0.001 /((3 * 60)/ 1))* 100 = 0.00055%在任何给定时间发生碰撞的可能性

1000个用户=(0.001 /((3 * 60)/ 1000))* 100 =在任何给定时间碰撞的概率为0.55%