反绝区零吧 关注:4,205贴子:37,281
  • 3回复贴,共1

伪随机讨论

只看楼主收藏回复

一。 真随机的定义
是指,对于当前位面(宇宙?世界?你想用什么词都可以)而言,从原理上无法预测结果。
二。我们肉体所在的位面,也有真随机
在极微观领域,或宏观量子态什么的。这没什么好说的,总之从原理上就绝对随机你就找量子力学就对了,我也不懂。
三。计算机位面的真随机
计算机是我们所在位面,模拟出来的一个子位面,它无法预测上级位面的伪随机。
计算机领域的真随机,需要额外的物理设备,比如收集计算机噪声(主位面的伪随机)等,来生成其位面的随机数(子位面的真随机)
计算机硬件噪声,从我们的主位面来看,在有限精度内,并不是完全无法预测的,是一种“伪随机”,包括抛硬币,也是一种“伪随机”,但对于子位面来说,这无法仅用子位面的信息来预测。
− 我们真的在主位面吗 ...
如果我们也是模拟出来的产物,那么我们所面临的“真随机”就来自于“主”模拟我们所用硬件的特点,所以我们无法预测。这是无法证明也无法证伪的,而且违反剃刀原则。
以上部分不是任何教科书中的知识,只是我个人理解,下面有点干货,请认真看吧~
四。计算机伪随机算法案例
仅仅使用程序算法,不调用硬件设备,从原理上不能生成真随机数,一般流程是,
先根据, 方法调用时的高精度时间,生成一长串分布均匀但打乱的数字,作为随机数种子seed,取随机数不过是不断取下一个(下一个索引对应的)数字(比如调Next()方法)。 一般来说它不是线程安全的,多线程在同一时间调用方法会取到相同的数字(原理是,受限于计算机时钟频率,来不及把索引值加1),后来有了解决方法比如线程锁 (原理是通过同步块索引标记,同一时间仅允许一个线程进这段代码)。
伪随机产出的数据,对于普通玩家来说和真随机没有区别,对于技术大佬,或许可以截取这段序列seed,从而预测后面的结果。
五。人为干预的随机/仓检/有保底的随机
仓检和伪随机没有半毛钱关系,真随机也可以做仓检,伪随机只是取随机数的方法,而仓检是逻辑代码。


IP属地:江苏来自Android客户端1楼2023-04-07 08:10回复
    例子:
    比如说,原本暴击概率1%,我取0~99的随机数,取到0就是暴击了。
    现在加入保底机制,如果玩家xxxx,那么取到0到10都算做暴击。
    上面这两段是逻辑代码,和伪随机没有关系。 伪随机指的是生成随机数的原理, 如果我们用真随机产出随机数,当然也可以采用仓检的逻辑代码。


    IP属地:江苏来自Android客户端2楼2023-04-07 08:10
    回复