在我们的日常生活中,随机数对我们一直很重要。从玩电子游戏、赌博到需要加密的安全实现,随机数对于安全加密都很重要,无论是加密您最喜欢的消息应用程序上的消息还是保护云端的个人信息。除了加密之外,它们还广泛用于模拟和建模。
但随机数的生成是不确定的,完全不可预测。因此,随机数生成器将生成不包含可识别模式或规律的数字序列。因此,当我们需要生成类似的确定性且适合统计分析的数字时,我们更喜欢使用伪随机数。
伪随机是什么意思?
伪随机数是一个看似随机但实际上并非如此的数字。
根据维基百科,伪随机数生成器(PRNG),也称为确定性随机位生成器(DRBG),是一种生成数字序列的算法,其属性近似于随机数序列的属性。PRNG 生成的序列不是真正随机的 美国赌博数据 因为它完全由初始值决定,称为 PRNG 的种子可能包括真正随机的值。
简而言之,PRNG 生成的数字看似随机但可预测。在这里,计算机使用种子值和算法来生成看似随机但确定的数字。
什么是种子?
种子是用于初始化伪随机数生成器的数字。
对于伪随机数生成器中使用的种子,它不需要是随机的。这个数字可以来自噪声的随机性,也可以是当前时间(以毫秒为单位)。
一旦我们选择了种子,我们就需要选择一个合适的算法。现在,我们将采用中间平方方法,即将种子乘以自身,然后输出结果的中间值。然后使用此输出作为下一个种子,并根据需要重复该过程多次。
相同的种子相同的序列。
伪随机序列最终必须用相同的种子重复。当算法达到它之前使用过的种子时 撰写好评的正面评论示例和模板 就会发生这种情况,循环重复。
伪随机序列重复自身之前的长度称为周期。
周期严格受初始种子长度的限制。例如,如果我们使用中间平方算法,并且我们使用两位数的种子,那么在重复使用种子并重复循环之前,算法最多可以生成 100 个数字。同样,3 位种子最多可以生成 1000 个数字,而 4 位种子最多可以生成 10000 个数字,然后重复自身。
在附加的 gif 图像中,蓝色图案表示伪随机数生成,其中伪随机序列重复自身,当算法达到种子时,循环重复。但是,只要忽略原始种子,算法生成的其余值将以伪随机方式遵循概率分布。白色图案表示真正的随机数生成器,其本质上是非确定性的
流行的 PRNG 算法
Mersenne Twister 产生 53 位精度浮点数,周期为 2**19937-1。C 中的底层实现既快速又线程安全。Mersenne Twister 是现存最广泛测试的随机数生成器之一。但是,由于完全确定性,它并不适用于所有目的 aub 目录 并且完全不适合加密目的。它是 的默认随机数生成器,并且也可用于。