伪随机和真随机区别( 三 )


比方说Dota中最著名的概率英雄虚空假面的技能“回到过去”: 使虚空假面有25%几率完全躲避一次伤害 。受限于War3引擎,这个技能采用的是真随机概率,在某个极端情况下(通常见于精彩集锦中),虚空假面能够保持很低的血量承受多次伤害却不死、最终反杀对手 。这种带给敌方极差 游戏 体验的系统,因此也进入了计师们“整治范围”之中 。
为了避免极差的 游戏 体验带来的玩家数量流失,设计者们提出了“伪随机”的概念: 在不确定性的随机事件当中,通过一系列算法使随机事件均匀分布在多次事件当中,尽可能减少或消除极端情况的发生,以提高玩家的 游戏 体验 。
在设计师们的努力下,“伪随机”应运而生,这里的伪随机就和上文的赝随机数算法(PRNG)意义不同了 。
制造“伪随机”的方法有很多,在War3、Dota2这类 游戏 当中普遍使用的是 “伪随机分布”(Pseudo Random Distribution,简称PRD) 处理概率 。
就拿Dota2中最强大的暴击技能“恩赐解脱”来举例: 幻影刺客有15%的几率造成200%/325%/450%致命一击伤害。在PRD机制下,幻影刺客的攻击实际上 并不是 每一刀都有15%的暴击率 。
根据PRD机制的公式P(N)=N*C可得出15%几率的C值为3.22%,即幻影刺客的第一次攻击暴击概率为3.22%;如果第一刀没有暴击,则第二刀的暴击率提升至2倍,即6.44%;如果仍旧没有暴击,则提升至3倍的9.66%,以此类推 。
如果继续推算,可得在第32刀时暴击几率会达到100%,最可能触发暴击的次数是第6刀,平均触发刀数是6.67刀等等……
同样,在连续触发暴击时,下一刀的暴击几率会减少 。RPD机制使竞技 游戏 中连续触发或不触发技能的几率降低,避免了运气成分过度干扰战斗结果,大幅提升了玩家的 游戏 体验,但不影响这些随机事件的正反馈:TI6决赛的“打我五下晕三下”,可是令全球人民集体沸腾了呢!
除了伪随机分布RPD之外,还有两种常见的伪随机: 洗牌算法 和 组合随机。
洗牌算法 最常见的用法,是在各大音乐播放器中的“随机播放”之中 。在随机播放时,如果采用真随机,会导致一首歌无论如何都播放不出,或是同一首歌连续播放数次(有兴趣的读者可以计算一下这些概率) 。为了解决这个问题,播放器采用的解决方案即是洗牌算法:将一个包含所有歌曲的数组像洗牌一样打乱,然后依次播放这个乱序数组 。
至于 组合随机 ,这是一种广泛应用于各个 游戏 的做法:在抽奖的时候进行两次、或是更多次的判断,一次不随机,而剩下的判断则是真随机 。比如说,你会在第X次抽卡时抽到SSR是确定的,但抽中的SSR具体是哪张卡,则是随机的——这就是广大手游中的“低保”系统了 。
在一堆数据之中想要分清“真随机”和“伪随机”似乎并不是那么容易 。那么接下来为大家介绍两个例子,有助于更好理解什么是“真随机”和“伪随机”:
真随机 :有一天,小明在的班级上举办了一次抽奖活动 。这个班级有40个学生,所以为了公平起见,保证每个学生都有1/40的几率中奖,老师准备了40个相同的纸盒,每个纸盒中都有40张纸条,有1张纸条是中奖纸条 。这样一来,每个学生都有1/40的几率中奖,但每个学生是否中奖并不受其他学生的影响 。在极端情况下,这个班上可能40个学生都能中奖 。这就是真随机 。
伪随机 :小明班上举办了抽奖活动 。为了公平起见,老师准备了1个纸盒,纸盒中有40张纸条,只有1张纸条是中奖纸条 。这样一来,每个学生都有1/40的几率中奖——但是显而易见,这个班上有且仅有一名学生能够中奖 。一名学生在中奖后,余下的所有学生中奖几率都会减少至0 。这就是伪随机 。

如何区分伪随机和真随机现在的计算机还无法产生一个真正的随机数,它能产生的随机数都是伪随机数,在这方面它跟人脑还没法比,但是它有强大的计算功能,可以通过复杂的计算弥补这一缺点 。
存在一个基本的随机率m,被的随机率都以m和固有概率共同计算,如网络游戏中攻击力的浮动,装备的精炼 。m=f(t)是时间t的函数,t至少精确到0.01秒 。t还是一个周期较大的周期函数.
因为计算机是结构,条理非常清晰的数理逻辑.
它所执行的东西都是按照人们编好的程序一步一步来的.
所以这并不是真正的随机.
举个例子来说,你玩过网游吧,一般的游戏里都有本地图内随机传送的技能或物品.
如果真随机的话,你无限次传送可以到达任何一个地方.