游戏掉落的概率设置问题

发表于2015-12-08
评论9 1.2w浏览


         侬记得这题伐:

         “游戏里一个怪物每次只会掉落一件物品,某套套装由两个部件AB组成,该怪物掉落部件A的几率为10%,掉落部件B的几率为5%,求平均需要多少次击杀才能凑齐该套套装。要求写出计算过程和理由。”

         这是个误导的开始。

         因为你的计算是完全没有意义的!

         我们先介绍一种传奇私服掉落屠龙刀的做法:1、一个月仅掉落1把;2、每个服务器仅掉落1把;3、掉落时刷出“假怪”在选定的玩家周围,玩家打死“假怪”掉落屠龙刀。

         亦有网传方法如下:先计算是否掉落,若掉落则从服务器请求,若掉落库存在则掉落库物品-1,若不存在则从另外的掉落包随机1件物品代替。

         各位看官,这以上做法,皆与掉落的概率设计认知有略微的出入。

         或许有看官嫌这是“土法子”,心中瞧不起。但这种方法能让游戏存活,并对“屠龙刀”趋之若鹜,则得认可它有可取之处。

         结合实际问题:

         有如下需求,在游戏最开始的3次战斗中,必定掉落1件帽子装备,让策划给出方案。

         ----------------------------

         若转化为数学问题呢?

         -------------思考线-----------------

        

         OK,必有同仁把问题转化为前3次掉落概率期望为1的条件下求改物品的掉落概率,继而把概率设置在1/3偏下。

         从数学期望的角度而言确实无懈可击,然而它绝对不是正确的答案。

         为什么呢?

         因为概率控制不了“这种体验”,这期望是一回事,而实际是另外一种情况:永远有运气不好的用户,他们挑剔、任性,或许有钱,也不一定付费,但若伺候的不到位,分分钟提升卸载率。

         正确的解答应是把这个需求提交给程序,和程序沟通好细节,老老实实按照需求码出一段没有BUG的代码。这时可能程序哔哩哔哩一些“快用你的数学公式设计一个概率”之类的谎话,千万不能掉进陷阱。

         这段代码或许会反复改,但是它是最合适的。

        

         我们再延伸一下,依然是掉落的问题:

         “一个副本掉落进阶材料ABC,总共掉落概率是30%,问如何分别设置他们的概率才能让它们均匀掉落?”

         ----------------------------

         还是得转化为数学问题。

         -------------思考线------------------

        

         答案是 ABC的掉落权重设置为100,100,100;或者掉落概率分别设置为10%

         侬注意到上面这句话是“?”结束的。

         认同的得拉出去枪毙十分钟。

         正确答案如下:

         1、该副本一天可以刷几十次,并且掉落物数量会产出几十个,那么可以这么设计。举例如1天刷N次的端游、页游中掉落的基础材料。

         2、该副本一天仅能刷十几次,每次刷的时候会付出体力的代价,并且产出物数量并不多,则需要在答案的基础上加上一条限制:

         若在一连串掉落事件中,A物品的未掉落的次数达到一个上限值,如累计5次未掉落,则在下一次的掉落事件中,A必然掉落且未掉落次数清零;BC的亦然。

         若程序问优先ABC谁先掉落呢?按照默认顺序吧,下面请给咱码段代码,让咱测测看看效果。

         为什么要加这么“愚蠢”的限制?

         -------------思考线------------------

         答案如下:因为在小事件中,概率的均等,并不与产出的均匀挂钩。

         我们是由期望求出概率的。

         而这个期望值只能在N次试验中才服从正态分布,而它正面对实际问题是:在少数的尝试中,如何保证每个玩家在少量的尝试中获得的ABC物品是差不多的?!

         这点是概率解决不了的。

 

         --------------下面的故事才不费脑子-----------------------

         在笔者经历过的某个手游的项目中,经历过这么类(ken)似(die)的事情。

         这是2014年类《刀塔传奇》的一个产品,它包含一个进阶的子系统,即英雄进阶需要吸纳一定数量的进阶材料,而进阶材料的来自不同的副本。

         由于地图资源不足,副本得重复利用。这样掉落材料上有一定的重叠。

         好嘛,接下来是详细介绍“蠢事”的时候了。我把在同一个副本的N个材料,按照概率均等掉落,并未做任何处理。(这里甚为对不起团队……)

         等至上线测试,总感觉掉落的概率有问题。比如一个副本掉3样东西,刷了十几次,结果有1件东西死活凑不齐。之后纷纷埋怨程序,这个概率算法有问题吧,怎么老这么诡异,缺啥啥不掉。我们一起研究了很久,一直找不到问题。我当时还乐呵……

         事实上是这种掉落得设置一个上限,达到某个值,让它必掉。这样可以规避掉上面的问题,即掉落极不均匀以及群体体验有偏差。

 

         ------------回到最初的题目---------------

         题木应考的是容斥原理。

         人均次数=1/0.1+1/0.05-1/0.85=23.33 (次)

         但结合实际,100个人进入游戏,击杀了怪物24次,能保证每个人都合成装备?

         ------------------假如----------------------------

         游戏里有交易系统,好像也不用加这样的限制。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引