使用量子整数作为种子生成的随机数被认为是伪随机的还是真正随机的?

Are random numbers generated using a quantum integer as its seed considered pseudo-random or truly random?

我总是听说量子计算机产生的随机数被认为是“真正随机”,而经典计算机产生的随机数被认为是“伪随机” ".

如果要使用量子整数作为 种子 生成随机数,那么从 种子 生成的数字是否会被视为 “伪随机”还是真随机?在任何地方都找不到这个说明,欢迎任何解释。

import random
random.seed(get_my_quantum_number()) #Some quantum integer generated from an API.
random.random() #Is this "pseudo-random" or "truly random" ?

random.random() 使用伪随机数生成器 (PRNG),它根据定义使用确定性算法并在数学上扩展其输入。因此,它生成的数字是伪随机的,即使它是由量子随机数生成器或其他一些不确定源的输出播种的。

种子是初始化 PRNG 的值,PRNG 可以生成的可能序列数取决于 PRNG 的状态大小和种子的大小。例如,如果种子或状态只有 32 位长,则无论种子来自何处,该 PRNG 最多可能有 232 个不同的伪随机数序列。

另请参阅这些问题:

  • Is Random function (in any programming language) biased?

无论如何,“伪随机”和“真随机”数字之间的区别不是应用程序关心的(并且您没有真正指定您想要的应用程序类型)。相反,一般来说:

  • 安全应用关心数字是否难猜;在这种情况下,只有加密 RNG 才能满足这一要求(即使是依赖于伪随机数生成器的 RNG)。 Python 示例是 secrets 模块或 random.SystemRandom.
  • 科学模拟关心的是这些数字是否表现得像独立的均匀随机数,并且经常关心这些数字在以后是否可重现。 Python 示例是 numpy.random.Generator.

例如,random.random()使用的伪随机数生成器Mersenne Twister不适用于密码学或信息安全;它产生的数字并不是为了难以猜测而设计的,无论生成器是如何播种的(无论是通过量子随机数生成器还是其他方式),情况都是如此。

相比之下,为信息安全而设计的伪随机生成器通常涉及加密哈希函数、块密码或流密码——特别是因为一个目标是使未来的伪随机数难以猜测,即使生成器的输出是已知的。