游戏中的“假”概率

tech2022-08-30  65

“假”概率

有这么一个笑话。

一个医生跟病人说,我做手术的成功率是10%,但我有个好消息要告诉你,我前面已经做死九个人啦!

真随机告诉我们,作为独立事件,这第十个人成功的概率还是10%,而伪随机则需要我们保证这第十个人成功几率高达100%。

简单来说,真随机是以抛硬币正面概率为二分之一为前提,扔一万次,就会有5000次左右正面。而伪随机则是以抛一万次保证5000次正面为前提,从而保证概率为二分之一。

同样,我如果只扔10次,也是希望能有5次正面的,而这是真随机无法做到的。

所以,“部分可预测性”是伪随机最大的特点。

随机是为了公平,而伪随机是为了体验。

如果没又伪随机,会发生什么呢?

你的歌单中有三首歌,听完一首歌马上又随机到同一首的概率是三分之一。

某阳师中10000抽不出卡真会发生在你身上。

KPL王者荣耀职业联赛,我一把无尽战刃20%暴击率能连续10刀暴击赢得冠军!

如果音乐软件连续播放相同歌曲,我会认为它是弱智软件;

如果,某阳师真的连续10000抽不出,我真的会弃坑;

如果比赛中对手一把无尽连续暴击10刀,我可能真的会卸载王者荣耀一天。

暴击机制

我们先来看看游戏中的暴击机制。

一般来说,竞技类游戏对暴击机制是又爱又恨。

爱的是能够在对局中增加变数,增加更多的可能性,能够让玩家每一局都能玩到不一样的哈姆雷特。天天上线天天肝,

恨的是随机性太强的话,玩家的水平会被随机性带来的收益所束缚,我带一把无尽战刃连续暴击对面再大的优势也遭不住啊,这样又会损害高级玩家的游戏体验。

为了限制这种随机性带来的影响,伪随机出现了,它替代了真随机成为了游戏公司的香馍馍。

玩家的理解是什么?

当我带着一把无尽战刃上战场,20%暴击率应该让我能够大概5次就能触发一次暴击,当然4-6次也可以,3-7次也行吧。但是我是不希望我连续10次不触发暴击,这我出个破军不好吗?我不想要所谓的完全随机,我只想要20%的暴击率看起来像是20%,而不是打小兵100%,打团的时候0%。

而这是传统真随机无法解决的。

暴雪是最早采用伪随机PRD算法的,从事件发生起,每次不成功的尝试都会增加一个固定的概率,当然成功后概率重新计算。

下表为Dota2 wiki中的解释。根据下图,当你只带一把无尽战刃时,第一次暴击概率仅有5.6%,如果没有触发,则第二次为11.2%,第三次为16.8%,以此类推。从表中可以看出,最可能的次数为4次,触发一次最大的次数为18次,平均概率为5次,正好20%。

还有一个有趣的推论,如果你35%的暴击率,第一次和第二次都没有触发暴击,那么第三次的概率已经叠加到100.8%,所以,连续攻击两次小兵都没暴击的话,第三下果断进攻英雄吧。

当然,这个概率也不只是暴击率,闪避几率等也是同样的道理。Dota2 wiki也给出了很多符合PRD算法的技能和物品,欢迎大家去了解。

抽卡机制

说抽卡之前先研究一下音乐列表是如何同时保证随机性和用户体验的。

首先肯定不是真随机每次播放完随机选下一首的,不然连续播放相同的两首歌也太蠢了。一般来说会预先将播放列表随机打乱,每次播放的时候就按照这个打乱后的列表依次播放,以此保证随机性。

而抽卡是如何操作的呢?

对于天朝的游戏公司,抽卡往往决定了用户充值,而充值决定了项目组的生死存亡,所以在这个问题上都是慎之又慎的。既要满足免费玩家,又要让付费玩家玩得爽,抽的爽。当然可能有点难,但总要保证不能因为氪金抽卡系统的不完善把氪金玩家逼走吧。

如果你不充钱,游戏公司没必要,也没理由让你玩的跟氪金玩家一样舒服。

一般来说有两种抽卡方式。一是使用伪随机使概率无限趋近于预设值。在中国,文化部要求游戏公司必须公布抽奖概率,这个基本都是通过算法实现的。

这种方式有个缺点,就是活动人数不多的情况下,理论上的10%中奖率在现实中有可能变成20%甚至更高。例如这活动我一共只打算送10部iPhone,结果大家运气都好起来,中奖人数多了不少,要让我送20部?

所以还有另一种方式,预设奖池,我一共就10部iPhone,你有本事就来抽,抽完为止,一共就这么多预算,成本非常容易控制。我们的元宝杂货铺的DevOps卡很有可能就是这种方式。

猜一猜哪支队伍会获胜?

王者荣耀第一届公开赛已决出8强!

进入小程序查看队伍信息、赛程等,亦可参与4强竞猜活动。最高可赢取王者荣耀手办!每天为队伍点赞三次获得一次竞猜机会(默认三次竞猜机会)

问:理论上,猜中6次以上兑换奖品的概率是多少?

A.25%

B.50%

C.其他(留言见~)

留言评论你的答案,或者谈谈关于“游戏概率”的感受,获取现金68.8抽奖资格~

更多活动 ,扫码关注我们

关于作者:明月,现任普元移动团队资深开发工程师,长期致力于IT技术研究,产品设计和开发等工作,擅长Java、NodeJs、ReactNative等领域技术。先后参加深圳登、太平洋保险等移动项目的实施,参与Mobile 8.0移动平台的设计开发工作。

最新回复(0)