【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳


3楼猫 发布时间:2024-02-25 13:13:00 作者:穿越8Q Language

【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳-第0张

名钻假日赌场的幸运轮盘允许玩家转动以抽取各种奖励。多年以来,玩家发现通过控制摇动转盘的力度、摇动转盘的时机、游戏内的帧数等要素,似乎可以改变幸运轮盘的转速和时长,以让转盘指针最终停留在玩家所期望的结果附近。以此为基础,各类 “四秒大法”、“五秒大法” 等奇招进而相继诞生。那么,这些操作的背后是否有理可循?而通过对脚本代码的解读,我们将给出名钻假日赌场幸运轮盘的最终事实,即:其结果是一个完全随机过程,不由玩家意志而发生改变,以此反驳迄今为止的所有各类 N 秒大法。

一、脚本代码

下面是本地脚本 casino_lucky_wheel.c 中用于生成奖品的有关代码。为了方便阅读,所有变量名称均作改动。

【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳-第1张

上面这段代码告诉我们,函数 generating_lucky_wheel_prize() 定义并初始化了用于储存 20 种幸运轮盘奖励的数组 luckyWheelRewardType[20](分别对应幸运轮盘上的 20 格),并通过函数 GET_WEIGHT_OF_LUCKY_WHEEL_REWARD_TYPE() 汇总了每种奖励的权重。这里,每种奖励的权重通过 20 个可调参数定义,每个是 5:

【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳-第2张

于是得出权重总和 sumOfWeight,即 100。

下一步,生成在 [0,100) 范围内的一个随机整数,并从奖励 0 开始,判断生成的随机数是否小于等于该奖励的权重 5——若小于,则选择该奖励;若大于,则将随机数减去 5,并从下一个奖励开始继续判断,直到选出奖励。

通过这段代码,游戏确保了在所有 20 种奖励中,每一种奖励的选取都是随机且等概率的,即 5%。而如果把一些同类型的奖励概括为一种奖励,那么真实的奖励概率,完全符合幸运轮盘界面所开示的概率,即:

  • 展台载具:5%
  • 载具折扣:5%
  • 神秘奖品:5%
  • 服装:20%
  • 筹码:20%
  • 游戏币:20%
  • 声望值:25%
【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳-第3张

二、随机数发生器

这里有一个问题,即上述代码中用于获取随机数的随机数发生器 MISC::GET_RANDOM_MWC_INT_IN_RANGE() 是否充分满足其随机性?因为如果其生成的序列过分简单,例如生成某一些数字的概率远大于其他数字,反映到幸运轮盘中就将是抽中某一个奖品的概率远大于其他概率,那么所谓的随机也就无从谈起了。

关于这一点则不必担心。事实上,Rockstar 专门给幸运轮盘采用了一个更高精度、更高质量的随机数发生器——进位相乘法伪随机数发射器(Multiply-with-carry Pseudorandom Number Generator,MWCPRNG),其可以在一秒内生成一千万个具有巨大周期的不同的随机数序列,因而完全不必担心其随机性问题。对这一算法感兴趣的,可参考维基百科条目。

【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳-第4张

三、幸运轮盘结果的确定

接下来我们回答一个问题:幸运轮盘的结果是从何时开始生成并确定的?答案是当玩家在幸运转盘按下 E 时。

当玩家进入赌场时,局部脚本 casino_lucky_wheel 就开始载入。在玩家没有按下 E 时,幸运轮盘的结果是 -1,即无;只要玩家按下 E,那么轮盘结果就立刻传输至有关的局部变量之中予以储存。接下来,玩家无论在什么时机以什么样的力度、什么样的帧数转动转盘,都只会导向早就已经确定了的结果。

只不过,Rockstar 在这一步耍了一点心机,那就是玩家的转动转盘的时机确实会导致转盘存在肉眼可见的转速区别。事实上,转盘的转速由且仅由以下因素决定:

  • 若玩家在第 0 ~ 2 秒间摇动转盘,则转盘是一个 “快转(Fast Spin)”;
  • 若玩家在第 2 ~ 3.5 秒间摇动转盘,则转盘是一个 “中转(Medium Spin)”;
  • 若玩家在第 3.5 秒以后摇动转盘,则转盘是一个 “慢转(Slow Spin)”。

但是,无论转盘的转速如何,都只是通过加减转盘转动的周期来进行误导,以让玩家觉得 “结果是可以自己控制的” 罢了。例如,假设玩家选中的奖品默认情况需要花 5 圈 + 5 格来转到,如果玩家转得慢一点,那就转 2 圈 + 5 格;如果玩家转得快一点,那就转 10 圈 + 5 格。无论怎样,最终的结果是相同的。

需要注意的是,玩家如果按下 E 但是又退出去,那么重新进入转盘的时候,结果又会重选一遍。因而,假设存在一种方法使得玩家可以观测到结果,那么玩家就可以反复进退转盘,直到看到心仪的结果时,再转下转盘。

四、验证

下面我们来实际验证幸运轮盘的随机性。这里,我们调用有关脚本来模拟玩家的抽转情况。我们让幸运轮盘结果每 5 秒钟就重算一次(相当于让玩家每 5 秒钟就进退一次转盘),以此运算一千次,来观察最终的概率分布。

【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳-第5张

可见,最终的概率分布已经相当接近系统开示的概率。

【侠盗猎车手5】名钻假日赌场幸运轮盘原理——对传统“N秒大法”的反驳-第6张

五、省流

最后通过正式回答开头的问题来结束本文:

——这么多年以来,那些各类 “N 秒大法” 都是玄学、毫无任何依据可言吗?

——对。

尊重概率吧。

六、补充

在第四节调用脚本的部分,Tez2 提供了一些帮助。

事实上,Tez2 在以前就发布过几段游戏内的实机测试视频,证明了 “当玩家按下 E 时结果就已经确定了,与摇动的时机、力度等均无关”,具体可见此处(Youtube 视频)。

在这段视频中,当 Tez2 按下 E 的时候,轮盘结果就已经确定为了 14,对照第一部分的数据,可知这是 $40,000。然后 Tez2 摇下转盘,结果准确无误地停留在了 $40,000 的格子上。

以下是其评价:

...There's no way to guarantee a vehicle prize or a mystery prize by waiting 4 seconds or by attempting myths like that. Your result is determined from the moment you accept the prompt. What I will say is that the result changes every time you exit and accept the prompt again. You don't have to spin, but simply exit and enter the animation. However, you wouldn't be able to figure out whether a spin is good or not from doing that so it's totally guesswork. You could end up replacing your vehicle prize with something less worthy for all we know.

本文原作者为 @一日暮言葉,系受权发布。


© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com