随机数生成:原理、方法与应用
1. 随机数生成程序概述
在随机数生成的相关程序中,有一个程序会打开指定的输出文件名(第17行),然后循环请求指定数量的64位随机整数(第18 - 24行)。其中的 random 函数会用一个随机值更新给定的64位整数,如果成功,该随机值会被写入输出文件(第20行)。
random 函数有点特别,我们只想要一个随机值,为什么会有一个 for 循环呢?这是因为 RDRAND 指令使用了一个硬件生成器,它基于CPU中的熵源来更新硬件实现的伪随机生成器的种子。所以,每次调用使用 RDRAND 的 __builtin_ia32_rdrand64_step 函数时,可能实际上并没有准备好可供读取的值。这个循环会尝试十次,这是推荐的做法,因为根据二项分布,在这种情况下,值永远准备不好的可能性极小。如果真的发生了这种情况,函数将返回零,程序也会停止。
2. 随机与伪随机序列
本章介绍了随机和伪随机序列的概念。给出了真正随机性来源的例子,并使用其中一个来源进行了实验,以生成随机字节序列。然后,通过一个简单的模拟(蒙提霍尔困境),验证了字节序列的表现是合理的。同时,另一个实验表明人类不擅长生成随机数。还展示了劣质伪随机序列对模拟(分形)的影响,并简要介绍了现代CPU生成随机数的方法。
3. 均匀随机数生成
大多数伪随机数生成器的核心操作是生成在某个范围内均匀分布的伪随机整数。我们定义一个均匀伪随机数生成器 P
超级会员免费看
订阅专栏 解锁全文
279

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



