为什么游戏里的都是伪随机,做不出真随机?希望来个简单易懂的解释?

我发现像LOL这些游戏,暴击机制都是伪随机的,前面几下没暴击,后面暴击几率很大概率。像王者荣耀更为明显,都可以卡暴击。

因为这样可以在保证总体概率完全不变的前提下,「极端好运」和「极端霉运」都尽可能变少,让每个玩家的运气成分降低,保证双方的体验。

“劫富济贫”的「伪随机」可以让欧皇更讲基本法,让非酋有最基本的游戏体验。

按照真实概率来做游戏的话,体验只会更差,那才是真恶心一次记住一年。(回答仅针对同一个概率数值的情况分析,不包括抽卡手游出货…)

举例来说,来比较20%的概率,分辨使用「真随机」和「伪随机」情况下,是2种不同的计算模式。

真随机的20%运作模式:每一下发生概率都是20%,每次都独立计算。

伪随机的20%运作模式:第1下发生概率为5.6%,若发生了则下一次继续按第1下5.6%算,若没发生则下一次概率+5.6%,比如第2下为11.2%,再不中的话第3下为16.8%,以此类推,直至发生后回到第1下5.6%。若概率累积超过100%,则视为下次必定发生。

5.6%这个数是可以用计算机算出来的,足以保证两种模式的发生概率是相同的,这个就不赘述了。每个概率和上面的数值都有一一对应的数值解(用计算机直接硬算就ok了,最简单的二分法都可行)。

那看看20%的概率两种模式下「好运」和「霉运」的分布。

我们先来看极度好运:

20%概率好运情况

连续2次触发

连续3次触发

连续4次触发

真随机

4.0%

0.80%

0.16%

伪随机

0.31%

0.018%

0.00098%

可以发现,伪随机模式下,出现极端好运的可能性大大降低了。

再来看看相对霉运发生的概率:

20%概率霉运情况

连续6次不触发

连续12次不触发

连续18次不触发

真随机

26.2%

6.87%

1.80%

伪随机

25.9%

0.239%

完全不可能发生

若第6下开始还没有发生,「伪随机」会极大的提高发生概率,保证玩家尽早触发一次;而第18下的保底彻底保证了再非也不可能18下都不中。

「真随机」则是继续特立独行。同样的20%概率,有0.8%可能会连续触发3次,又有1.8%的概率会连续18次都不触发…

也就是说20%概率极度霉运前提下,如果尝试100个回合的「连续攻击18次」,其中有数学期望1.8个回合的会发生完全不触发,这个概率其实真的不算很低了…

可以发现「伪随机」在保留随机性前提下,比「真随机」要保证双方游戏体验。

用真随机,很多游戏体验只会更糟糕。

比如对于《俄罗斯方块》,如果用真随机,那只要你玩得足够多,肯定会碰到连续30个不下来竖棒子的情况,有时又碰到10个里面出6个竖向棒子…哪种都是非常蛋疼的。

而对战类游戏就更加了,比如《DOTA2》里的PA这种带暴击英雄,暴击几率15%如果用真随机,玩家的心理预期可能是6-7刀暴击一次,但实际上连续32刀不暴击的概率也有0.55%…更不要说虚空这种英雄,如果用真随机,那一定会出现比现在多得多得多的「对方虚空敲你一锤子,你直接满血被木大致死」的情况…

以上任何一种碰上一次可能就足够把人恶心到删了游戏,素质差的可能会想跟游戏制作人他妈连麦(x

只能简单举些例子,可能不那么直观,其中还涉及到「随机」和人们的心理上误解为「平均」等等,这里不展开了。

技术
©2019-2020 Toolsou All rights reserved,
TypeScript:函数类型接口8道大厂指针笔试题让你秒杀指针!!!MySQL 日期时间加减mysql 查询条件之外的数据_mysql 查询符合条件的数据查linux的操作系统版本,如何查看Linux操作系统版本?将String类型转换成Map数据类型使用uuid做MySQL主键,被老板,爆怼一顿C语言中的字符串函数和字符函数linux服务器中毒排查--基础篇C# ASCII码字符转换