我们知道计算机并不会真正意义上的随机,计算机里所有的随机都是伪随机的。如果你知道他的随机数是怎么来的,只要算力够强大。那么随机就能预言出来。
如果我们这个世界上的随机也是伪随机的,比如洗牌看起来是随机,实际上这种也是伪随机,只要你会算洗牌的方法那么牌在那里就是绝对的,那么算力够,那么预言是不是真的就能实现。
如果让一只猴子在打字机上随机地进行按键,如果一直不停的这样按下去,只要时间达到无穷时,这只猴子就几乎必然可以打出任何给定的文字,甚至是莎士比亚的全套著作也可以打出来。
https://cway.top
虽然自身确实无法生成真随机数,不过结合各类传感器,借助内部物理元件电压/温度/频率瞬时数值等等外部参数后就能生成真随机数了。
LOL暴击对于我来说就是随机的。在25%暴击的情况下,下一次是不是暴击我不知道。我无法干预结果 中间的过程我也不知道。如果参照物是LOL程序员,这个就是伪随机。因为跟实现的算法有很大关系。程序员视角这个随机完全可以预测出来。这仅仅是一把游戏,如果多了我也可以通过统计去预测暴击几率。
总结一下就是 我无法通过模型进行预测的就是随机,模型有一点点能预测的我叫伪随机,完全能预测的就不是随机了
小米MIX2s(白)
@是猫不是虎,@拒绝柳岩99次,LOL暴击是有补偿机制的,所以不是伪随机,更不是真随机,而是非随机。
也就是说,游戏首先用伪随机数生成器计算是否暴击,但是如果你脸黑,计算结果极差,连续N次不暴击,那补偿机制就会触发,下一次一定会暴击。相反,如果你运气极好,计算结果是短时间内多次暴击,那下一次一定不暴击。
这和部分游戏的必需品开箱子类似。比如跑跑卡丁车手游的“宾果车”,表现为抽奖,结果也是随机给出的,每个人最终花的钱也确实不一样。但是玩家都知道,基本上只要花多少钱就一定能开出来,没有人会担心自己脸黑完全开不出。所以虽然看着是抽奖,但是大家购买的心态完全不是抽奖,而是奔着“我一定会得到”的目的去的,他们也确实都能得到,花的钱也全是那个范围,无一例外。
所以,这些例子中看起来是“随机”的机制都不是随机,也不是单纯的伪随机,而是被人为控制的。因为如果不人为控制,使用均匀分布伪随机数生成器,那么对于“连续攻击几次可以触发暴击”这个问题,我们就会得到如下分布:
我们称这种分布为正态分布。比如,上图中游戏的暴击几率为1/9,那么你就有约19%的几率恰好9次暴击一次,但是你还有15%的几率8次暴击一次,12%的几率12次暴击一次,1.5%的几率4次暴击一次,1%的几率14次暴击一次,以及(可能,我没有计算,纯目视)0.1%的几率20次暴击一次!
0.1%的几率看起来很小,但是乘上一场游戏内你要攻击的次数,就绝非一个小数目。如果一场游戏你攻击一千次,那就很可能遇到一次这种情况。如果你攻击一万次,那就很可能遇到十次这种情况。
二十次暴击一次,平常你可能不在意,但是如果是关键团战中呢?如果你因为暴击迟迟不触发直接输掉比赛了呢?此时你会有什么感想?“你告诉我暴击几率为1/9,结果20次才触发暴击,这合理?”
这不合理,这对游戏的公平性影响极大。如果团战中有时就算玩家再努力,暴击迟迟不触发也于事无补。有时就算玩家再消极,随随便便就能点出十连暴击秒杀敌人。那这个游戏可以说任谁都不想玩。如果在电竞比赛中发生这种事件,游戏的竞技公平性甚至“电竞价值”也会大打折扣。
所以,我们必须去掉极端值。我们要随机,让玩家无法预测下一次会不会暴击。但是我们也要公平,不能让好运和霉运在团战中“太随机”的出现。所以现代游戏的普遍做法是扔掉极值,只取中间部分。也就是说:
此时,该事件就不再是纯粹的随机事件,也不再是纯粹的伪随机事件了。
至于充值开箱子的游戏,特别是那些就连“必需品”也以抽奖形式出售的游戏,就更存在这个问题了。如果采用均匀分布伪随机数生成器,那就一定会有极少数人真的命中曲线的最末端。而《大部分人花几百就抽到的东西我花几万也没有抽到》这种新闻只要曝出来一起,对游戏的正常运营就是一种致命打击。
所以,代码必须保证极端情况不仅发生概率为0,发生次数也为0,游戏才能正常运营下去,不被玩家的口水、投诉和欺诈指控淹没。
当然,只要不涉及钱的问题,那么游戏开发者确实想用什么随机分布都行。比如那些打怪爆出的稀有物品,搞个正态分布完全没问题,别人一次就出你一万次也不出,你也没办法找游戏公司麻烦,因为如果你真的计算一下的话就会发现,全服玩家的综合掉率确实就精确的位于正态分布的中间,而你只是运气不好位于曲线末尾罢了。
但如果涉及钱的问题,以及“公平竞技”的问题,那就:绝对不能有人位于曲线末尾,一个也不能有,一次也不能有。所以曲线末尾被以编程的形式硬性裁剪,事件的发生频率就不再符合自然分布概率,也不再符合伪随机数的分布概率。
没错,在你洗牌的时候我已经预测到你抽出来的是一张纸牌了
红米1s(绿)