牛叔叔 的笔记

好好学习

2023-07-30 11:46

为什么编程中的随机数通常被称为伪随机数

牛叔叔

其它

(774)

(0)

收藏

编程中的随机数通常被称为伪随机数,是因为它们实际上是通过确定性的算法生成的数列,而不是真正的随机性。


计算机程序在生成随机数时,通常使用所谓的伪随机数生成器(Pseudo-Random Number Generator,PRNG)。这些生成器采用一个种子(seed)作为输入,并使用一系列计算步骤来生成一个看起来具有随机性的数值序列。


由于计算机程序是基于确定性的算法运行的,所以在相同的种子输入下,PRNG会生成完全相同的数值序列。这使得随机数的生成变得可重现,可以在需要的时候以同样的顺序再现随机数序列。


然而,PRNG的种子可以被设置为时间戳、系统状态或其他随机值,从而增加了初始输入的不可预测性,并使生成的数值序列在常规情况下看起来具有随机性。但从理论上讲,PRNG生成的序列是完全可预测的,只要知道初始种子和生成算法。


相比之下,真正的随机数是在物理过程中产生的,如量子力学事件或大气噪声等。这些自然界的随机事件是无法预测的,并且在统计上具有真正的随机性。


因此,尽管编程中的随机数看起来具有随机性,但实际上是伪随机数,通过确定性算法生成的数值序列。对于大多数应用而言,伪随机数已经足够满足需求,并且具有良好的性能和可重现性。但在某些安全敏感的应用,例如密码学和加密系统,可能需要使用真正的随机数生成器。


在计算机科学中,可以使用真正的随机数生成器(True Random Number Generator,TRNG)来生成真正的随机数。与伪随机数生成器不同,TRNG基于物理过程而不是算法。


TRNG使用物理过程中的不可预测性作为随机性的来源。例如,可以使用量子力学的特性、大气噪声、放射性衰变等来捕捉真正的随机性。这些物理过程提供了一个可靠的来源,产生无法被预测的随机值。


TRNG通常是通过在计算机系统中捕获物理过程的随机性,然后将其转化为数字形式来实现的。硬件设备如随机噪声发生器、热噪声发生器、放射性衰变探测器等可以用作TRNG的组件。


需要注意的是,TRNG的产生速度可能较慢,而且在一些特定应用场景下要求高速的情况下,伪随机数生成器可能更加符合要求。


总结一下,虽然在计算机科学中可以使用真正的随机数生成器(TRNG)来生成真正的随机数,但在大多数情况下,伪随机数生成器(PRNG)已经足够满足需求,并且具有良好的性能和可重现性。


0条评论

点击登录参与评论