首先声明,我只是简单介绍几个常用判定方法,里面所提举的例子不保证完全符合事实,但保证是游戏里会出现的判定方式
具体JS用的哪个大家自己考虑吧,我没那个能力反编译JS的程序,我只是给大师们提个醒
对于这种无法预知结果的乐透,我们通常称作它是一个随机数
比如掷骰子,丢硬币,乃至现在的点奇穴,我们都可以认为它是一个随机的过程
==========分割线-简单随机与伪随机==========
1.简单的随机函数
首先呢计算机里是没有绝对的不可预知的随机过程的
我们通常玩游戏丢点数(-roll),虽然每次出来的结果都不同,但都属于JS编制的一个函数数列
(数列满足条件:均值=50,方差足够大,具体意思不清楚也没事,就是表示数列里1-100每个数字出现的次数是基本相同的)
也就是说,我们如果知道这个函数,就能知道下一次我们会得到多少点,这个点是确定无法改变的
2.游戏里的判定
当我们有了这个数列,我们就可以做其他函数来计算游戏中的数据
举例1:暴击
假设我们的暴击率为25%
那么这次攻击是否暴击呢?具体判定方式如下:
首先取数列里的下一个数,假设为20
判定其是否在1-25之内(是或否)
判定为是,则玩家本次攻击打出暴击效果
3.伪随机
如果经常玩魔兽争霸3或者dota的同志们也许会了解这个东西
在dota里所有英雄的暴击或者闪避数据都是一个“伪随机”过程
它也是使用的上面的判定方式,但是它有个数据补偿,据说在一些有强化的游戏里,为了避免玩家强化失败损失过大,也会有这个补偿措施、
举例2:暴击(伪随机)
假设我们的暴击率仍旧是25%
那么下面几次攻击是否会暴击呢?具体方式如下:
第一次攻击
首先取数列里的下一个数,假设为72
判定其是否在1-25之内(是或否)
判定为否,则玩家本次攻击不暴击
第二次攻击
仍旧使用这个数,即72
判定其是否在1-(25+25),也就是1-50之内
判定为否,则本次玩家不暴击
第三次攻击
仍旧使用这个数,即72
判定其是否在1-(25+25+25),也就是1-75之内
判定为是,则玩家在第三次攻击中暴击
伪随机通过这种补偿,保证你一定能在1/p次内达到目的(p为暴击,ROLL点,闪避的概率)
这也是很多游戏里某些所谓强化大师用的垫刀流(找便宜东西连续强化失败,再强化需要的装备)理论依据