伪随机数:生成、测试与应用
在计算机科学和相关领域中,随机数的使用非常广泛。然而,真正的随机数有时可能过于随机,无法满足我们的特定需求。本文将深入探讨伪随机数的生成、测试以及相关应用。
1. 压缩挑战与随机复杂性
在文件压缩方面,我们可以给自己设定两个挑战:
- 最大文件压缩到最小尺寸 :创建一个尽可能大的文件,使其能被压缩到最小的大小。
- 最小文件压缩到最大尺寸 :创建一个尽可能小的文件,使其能被压缩到最大的大小。
更精确地说,假设原始文件和压缩文件的大小分别为 x 和 y 字节,我们的目标是最大化或最小化压缩比 x/y。为了实现这一目标,我们需要精心设计原始文件的构造策略。例如,具有高度重复性或规律性的文件通常更容易被压缩,而具有较高 Kolmogorov - Chaitin 复杂度的文件则更难被压缩,在某种意义上更具随机性。
2. 伪随机数的生成
当我们需要在计算机上模拟科学实验时,真正的随机数可能并不理想。因为我们希望能够重复模拟并得到相同的结果,而真正的随机数无法重现,需要大量的存储来保存生成的所有数字。因此,伪随机数成为了一个很好的解决方案。
伪随机数可以通过算法来描述,我们将生成的伪随机数看作一个序列 R。首先,我们指定序列的第一个元素 R0,即种子。然后,通过应用算法来计算下一个元素 R1,以此类推。例如,线性同余生成器(LCG)就是一种常用的生成伪随机数的方法,其算法公式为:
[R_{i + 1} = a \cdot R_i + c \pmod{p}]
其中,我们将 (R_
超级会员免费看
订阅专栏 解锁全文
2142

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



