本文作者:游鲨游戏圈。专注游戏策划知识分享,校招 & 社招零基础入行辅导、在职策划能力进修。详情请关注微信公众号【游鲨游戏圈】
概率在游戏中应用非常广泛,开箱、抽卡、道具掉落的背后都有一套复杂的概率模型在支撑。而且游戏追求的是玩家觉得公平,而不是绝对公平。因此在游戏设计中不能完全遵守某一种既定概率分布,需要对概率模型进行不断的调试。本文就来介绍几种常见的概率分布,及其在游戏中的应用。本文偏数值理论,了解即可。
1、二项分布
二项分布是指在只有两个结果的n次独立的伯努利试验中,所期望的结果出现次数的概率。在单次试验中,结果A出现的概率为p,结果B出现的概率为q,p+q=1。那么在n=10,即10次试验中,结果A出现0次、1次、……、10次的概率各是多少呢?这样的概率分布呈现出什么特征呢?这就是二项分布所研究的内容。 --维基百科
掷一枚硬币出现正面和反面的概率各为0.5,那么掷1次,出现正面的概率肯定是0.5。掷2次、掷3次呢?
掷2次出现的结果有4个,正正、正反、反正、反反。因为p=0.5,所以每个结果出现的概率是0.5×0.5=0.25,那正面出现2次、1次、0次的概率分别是0.25、0.5、0.25。
掷3次出现的结果有8个,每个结果出现的概率是0.5×0.5×0.5=0.125,那正面出现3次、2次、1次、0次的概率分别是0.125、0.375、0.375、0.125。
统计学家们总结出了计算概率的一般公式: 其中b表示二项分布的概率,n表示试验次数,x表示出现某个结果的次数。是组合,表示在n次试验中出现x次结果的可能的次数。如10次试验,出现0次正面的次数有1次,出现1次正面的次数有10次,……,出现5次正面的次数有252次,等等。其计算也有一个通式: 二项分布在游戏中使用的很多,比如抽卡系统。一般策划会设定抽到xx卡的概率是多少,这个进行n次抽卡,抽到几张xx卡的概率分布函数就是二项分布。根据定义可知,在二项分布中,n次试验中正好得到k次成功的概率由概率质量函数给出: 那么怎么测试这张卡被抽中的概率呢?这里看一个例子,下图分别是概率为0.1的事件在10,100,500和1000次的事件中的出现次数的概率分布。 可以看到随着试验次数的增多,中间的峰越窄,事件发生的次数越向真实概率集中,可以预见的,我们测试抽卡次数越多,所得到xx卡的数量就越接近于它的本身概率。
2、泊松分布
Poisson分布,是一种统计与概率论中常见的离散概率分布,由法国数学家Siméon-Denis Poisson在1838年发表。其适合于描述单位时间内随机事件发生的次数的概率分布。如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数、激光的光子数分布等等。
泊松分布对应的是二项分布的极端情况,当二项式分布的次数n很大,而发生的概率p很小时,就可以使用泊松分布代替二项式分布,具体来说,它的成立需要满足三个条件 1.事件是小概率事件 2.事件是独立的,不会互相影响 3.事件发生的概率是稳定的
先来看一个例子(引自“阮老师谈泊松分布”):
已知某家小杂货店,平均每周售出2个水果罐头。请问该店水果罐头的最佳库存量是多少?
假定不存在季节因素,可以近似认为,这个问题满足以下三个条件: (1)每个顾客购买水果罐头是小概率事件(顾客的数量很多)。 (2)购买水果罐头的顾客是独立的,不会互相影响。 (3)顾客购买水果罐头的概率是稳定的。
在统计学上,只要某类事件满足上面三个条件,它就服从"泊松分布"。
泊松分布的公式如下: 各个参数的含义:
P:每周销售k个罐头的概率。 X:水果罐头的销售变量。 k:X的取值(0,1,2,3...)。 λ:每周水果罐头的平均销售量,是一个常数,本题为2。 根据公式,计算得到每周销量分布:
从上表可见,如果存货4个罐头,95%的概率不会缺货(平均每19周发生一次);如果存货5个罐头,98%的概率不会缺货(平均59周发生一次)。
泊松分布在游戏中主要用于道具掉落。已知某珍惜道具,平均每周掉出2个,请问该在每周掉出多少个时设置报警?看到这里,是不是立马就得出了答案?因为游戏中,玩家的行为是未知的,就算知道了道具掉落的概率,也很难在实际中计算玩家得到道具的概率,这个时候,只使用平均每周掉出2个这一项数据,就可以根据泊松分布计算出概率分布,从而确定掉落大于多少时是小概率事件。
3、洗牌算法
洗牌算法,是一个用来将一个有限集合生成一个随机排列的算法,这个算法生成的随机排列是等概率的。
这个算法的原理是将(0, M)个数字随机打乱,形成一个序列,它必定满足随机性及在(0, M)之内的均匀分布。然后,我们每次从中抽取一个数值,与我们期望的数值进行比较,从而判断是否命中。比如15%的概率,可以简化为在(1, 100)中抽取一张,如果小于等于15,那么就命中。当然,我们也可以用(1,20)中抽取小于等于3的数值作为命中。这种算法每次都要把牌发完,才允许重置序列,只能在小范围内保证随机分布的均匀。