首先必须由二项分布引出:
如果做一件事情成功的概率是 p 的话,那么独立尝试做这件事情 n 次,成功次数的分布就符合二项分布。展开来说,在做的 n 次中,成功次数有可能是 0 次、1 次 …… n次。成功 i 次的概率是:
( n 中选出 i 项的组合数) * p ^ i * (1-p)^ (n-i)
以上公式很容易推导,用一点概率学最基本的知识就够了。因为每一特定事件成功的概率是 p ,不成功的概率是 1-p 。i 次成功的事件可以任意分布在总共的 n 次尝试中。把它们乘起来就是恰好成功 i 次的概率。
当我们把二项分布推而广之后,就可以得到波松分布。
可以这样考虑,在一个特定时间内,某件事情会在任意时刻随机发生(前提是,每次发生都是独立的,且跟时间无关)。当我们把这个时间段分成非常小的时间片构成时,可以认为,每个时间片内,该事件可能发生,也可能不发生。几乎可以不考虑发生多于一次的情况(因为时间片可被分的足够小)。
当时间片分的越小,该时间片内发生这个事件的概率 p 就会成正比的减少。即:特定时间段被分成的时间片数量 n 与每个时间片内事件发生的概率 p 的乘积 n*p 为一个常数。这个常数表示了该事件在指定时间段发生的频度。
回过头来再来看这段时间内,指定事件恰好发生 i 次的概率是多少?代入上面推导出来的公式得到:
n * (n-1)… (n-i+1) / i! * p^i * (1-p) ^ (n-i) => np(np-p)…(np-ip+p) / i! * ((1-p) ^ (-1/p))^(-np) / (1-p) ^i
当 n 趋向无穷大时,p 趋向 0 。而此时 (1-p)^(-1/p) 趋向 e 。注:推导过程可见文末。
上面这个公式可以划简为 lamda ^ i / i! * e ^ – lamda (lamda=n*p)
这个公式推导过程不复杂,耐心点一看就明白。而这个关于 i 的分布就是著名的泊松分布了。
为什么泊松分布很有价值,因为我们在推算某些特殊事件在一段时间内可能发生次数的时候经常会用到它。比如设计一个无聊的打怪练级的 MMORPG ,假如玩家到一个地图杀怪纯属独立随机事件,我们应该在这个地图按什么频率刷怪可以合适到让来的玩家不会找不到怪打。
玩家同时来到这个地图的数量就是满足泊松分布的,我们统计出一段时间来访玩家的平均数,就可以根据泊松分布公式推算出玩家峰值在什么数量上出现很大的概率。然后就可以进一步计算出合适的刷怪频率和密度了。
呵呵,想指责我这个想法过于天真的职业游戏策划请先别忙着骂。我承认我这个例子举的很不恰当。因为导致玩家去一个地区的因素很多,包括地图的怪的数量等等。而且玩家之间也有很强的联系。玩家到一个地图去并不是独立事件,最终的结果很可能偏离泊松分布很远。但请原谅我吧,今天太晚了,一下想不出什么跟游戏设计密切相关的例子。有机会我会补充个更好的。
不过请相信我,日常生活中有很多突发事件满足泊松分布的,不信请自己 google 之。
本着追根究底的原则,写一下前面提到的一个极限的推导。尽量用高中数学程度就可以理解的语言啦:
(1-p)^(-1/p) 当 p 趋向于 0 时,为什么它的值趋向 e ?
关于 e 可以看我写的另一篇文章 ,从那篇文章提到的知识,我们可知 ln x 的导数是 1/x ,由导数的定义可知
1/x = lim (( ln x’ – ln x ) / ( x’ -x )) 这里 x’ 趋向 x
令 x’ = x + 1/n ( n 趋向无穷大) 代到上式中, 并用对数计算法则化简得到
1/x = lim ( ln ((1+ 1/ (n*x)) ^ n)) 这里 n 趋向无穷大
再令 z = 1/x ,并再一次用对数运算法则化简可得
z = lim (ln (1+z/n)^ n ) 这里 n 趋向无穷大,两边取指数函数,可变化为 e^z = lim ((1+z/n)^n)
当 z = 1 时,我们可以得到特例: e = lim ( (1+1/n)^n ) ,n 趋向无穷大
回头再来看式子 (1-p)^(-1/p) ,令 n = 1/p ,因为 p 趋向于 0 ,所以 n= 1/p 趋向无穷大。前式可变形为:
(1+1/(n-1))^n ,当 n 趋向无穷大的时候,跟 (1+1/n) ^ n 有相同的极限 e 。