伪随机数生成算法解析
1. 物理规则与随机数的背景
物理的数学规则既与确定性宇宙相符,也与存在真正随机性的非确定性宇宙相契合,甚至还和“多世界”情景一致,在该情景中每个事件的所有可能版本都会在彼此无法访问的不同宇宙中发生。不过,当我们尝试在宇宙中为自由意志找到一席之地时,这些对物理定律的解释就变得更加复杂了。而我们对数学物理的解释并非取决于数学理解,而是哲学倾向,因为任何立场在数学上都是可接受的。
计算机本身应该是确定性的,它无法产生真正的随机数。但在很多应用中,如运行视频游戏、进行机器学习或开展随机实验等,却需要随机数。因此,我们设计了能产生近似随机数的算法,即伪随机数生成算法。
2. 线性同余生成器(LCG)
线性同余生成器(LCG)是最简单的伪随机数生成器(PRNG)之一。要实现该算法,需选择三个数,分别记为 n1、n2 和 n3。LCG 从一个自然数(如 1)开始,通过以下方程得到下一个数:
next = (previous × n1 + n2) mod n3
在 Python 中,用 % 代替 mod,完整的 LCG 函数如下:
def next_random(previous,n1,n2,n3):
the_next = (previous * n1 + n2) % n3
return(the_next)
该函数是确定性的,即相同输入会得到相同输出。为了评估其生成伪随机数的能力,我们可以创建一个
超级会员免费看
订阅专栏 解锁全文
3190

被折叠的 条评论
为什么被折叠?



