游戏掉落的概率设置问题
“游戏里一个怪物每次只会掉落一件物品,某套套装由两个部件A,B组成,该怪物掉落部件A的几率为10%,掉落部件B的几率为5%,求平均需要多少次击杀才能凑齐该套套装。要求写出计算过程和理由。”
这是个误导的开始。
因为你的计算是完全没有意义的!
我们先介绍一种传奇私服掉落屠龙刀的做法:1、一个月仅掉落1把;2、每个服务器仅掉落1把;3、掉落时刷出“假怪”在选定的玩家周围,玩家打死“假怪”掉落屠龙刀。
亦有网传方法如下:先计算是否掉落,若掉落则从服务器请求,若掉落库存在则掉落库物品-1,若不存在则从另外的掉落包随机1件物品代替。
各位看官,这以上做法,皆与掉落的概率设计认知有略微的出入。
或许有看官嫌这是“土法子”,心中瞧不起。但这种方法能让游戏存活,并对“屠龙刀”趋之若鹜,则得认可它有可取之处。
结合实际问题:
有如下需求,在游戏最开始的3次战斗中,必定掉落1件帽子装备,让策划给出方案。
-------------割---------------
若转化为数学问题呢?
-------------思考线-----------------
OK,必有同仁把问题转化为前3次掉落概率期望为1的条件下求改物品的掉落概率,继而把概率设置在1/3偏下。
从数学期望的角度而言确实无懈可击,然而它绝对不是正确的答案。
为什么呢?
因为概率控制不了“这种体验”,这期望是一回事,而实际是另外一种情况:永远有运气不好的用户,他们挑剔、任性,或许有钱,也不一定付费,但若伺候的不到位,分分钟提升卸载率。
正确的解答应是把这个需求提交给程序,和程序沟通好细节,老老实实按照需求码出一段没有BUG的代码。这时可能程序哔哩哔哩一些“快用你的数学公式设计一个概率”之类的谎话,千万不能掉进陷阱。
这段代码或许会反复改,但是它是最合适的。
我们再延伸一下,依然是掉落的问题:
“一个副本掉落进阶材料A、B、C,总共掉落概率是30%,问如何分别设置他们的概率才能让它们均匀掉落?”
-------------割---------------
还是得转化为数学问题。
-------------思考线------------------
答案是 A、B、C的掉落权重设置为100,100,100;或者掉落概率分别设置为10%?
侬注意到上面这句话是“?”结束的。
认同的得拉出去枪毙十分钟。
正确答案如下:
1、该副本一天可以刷几十次,并且掉落物数量会产出几十个,那么可以这么设计。举例如1天刷N次的端游、页游中掉落的基础材料。
2、该副本一天仅能刷十几次,每次刷的时候会付出体力的代价,并且产出物数量并不多,则需要在答案的基础上加上一条限制:
若在一连串掉落事件中,A物品的未掉落的次数达到一个上限值,如累计5次未掉落,则在下一次的掉落事件中,A必然掉落且未掉落次数清零;B、C的亦然。
若程序问优先A、B、C谁先掉落呢?按照默认顺序吧,下面请给咱码段代码,让咱测测看看效果。
为什么要加这么“愚蠢”的限制?
-------------思考线------------------
答案如下:因为在小事件中,概率的均等,并不与产出的均匀挂钩。
我们是由期望求出概率的。
而这个期望值只能在N次试验中才服从正态分布,而它正面对实际问题是:在少数的尝试中,如何保证每个玩家在少量的尝试中获得的A、B、C物品是差不多的?!
这点是概率解决不了的。
--------------下面的故事才不费脑子-----------------------
在笔者经历过的某个手游的项目中,经历过这么类(ken)似(die)的事情。
这是2014年类《刀塔传奇》的一个产品,它包含一个进阶的子系统,即英雄进阶需要吸纳一定数量的进阶材料,而进阶材料的来自不同的副本。
由于地图资源不足,副本得重复利用。这样掉落材料上有一定的重叠。
好嘛,接下来是详细介绍“蠢事”的时候了。我把在同一个副本的N个材料,按照概率均等掉落,并未做任何处理。(这里甚为对不起团队……)
等至上线测试,总感觉掉落的概率有问题。比如一个副本掉3样东西,刷了十几次,结果有1件东西死活凑不齐。之后纷纷埋怨程序,这个概率算法有问题吧,怎么老这么诡异,缺啥啥不掉。我们一起研究了很久,一直找不到问题。我当时还乐呵……
事实上是这种掉落得设置一个上限,达到某个值,让它必掉。这样可以规避掉上面的问题,即掉落极不均匀以及群体体验有偏差。
------------回到最初的题目---------------
题木应考的是容斥原理。
人均次数=1/0.1+1/0.05-1/0.85=23.33 (次)
但结合实际,100个人进入游戏,击杀了怪物24次,能保证每个人都合成装备?
------------------假如----------------------------
游戏里有交易系统,好像也不用加这样的限制。