分享

为什么很难给出“随机性”的数学定义?如何获得真正的随机数?

 老胡说科学 2021-11-08
如何获得 "真正的 "随机数?
检查薛定谔的猫,并根据猫是活的还是死的生成0或1,这是生成随机数的一个很好的方法。
英国统计学家蒂佩特在1927年发表了第一张随机数表。这张表上的数字由从人口普查登记册中“随机”收集的数字组成。 尽管蒂佩特的随机数表在当时被成功地用于验证和发现新的分布规律,但事实证明,书中给出的数字无法通过很多现代的随机性测试。此外,各种研究都认为,我们(人类)很难生成真正的随机数。但随着物理学的发展,我们找到了比投掷骰子更有效地生成随机数的方法。今天,我们离在智能手机上建立量子随机数生成器(QNRG)的光子探测器芯片不远了——这将基于量子叠加原理。
我们为什么需要随机数?‍
数百亿元的加密行业需要随机数作为基本资源从虚拟游戏中的发牌等简单应用到解决现代IT行业的加密问题,随机数都是必不可少的。在统计分析和控制过程中,在蒙特卡洛类型的数值模拟中,在具有非确定性行为的人工智能(AI)算法中,或在遗传算法中模拟神经网络和进化,也经常需要随机数据。

如何获得 "真正的 "随机数?‍

随机数生成器可分为软件生成器和硬件生成器。每一类中的一个子类会遇到网络安全的随机数生成器。
伪随机数生成器(PRNG)
获得随机数的一种有效方式是通过算法生成随机数,这些随机数对许多应用来说已经足够好。以这种方式获得的 "随机 "数被称为伪随机数,因为它们在知道初始参数和使用的算法后很容易被复制,这意味着它们是确定的。可复制的随机数据集在某些情况下可能是有益的,但如果别人能复制它们,它们在加密应用中一般是不安全的。
伪随机数的缺点是,算法是完全可预测的。此外,所有伪随机数的序列最终都会重复。
伪随机数生成器(PRNG)的算法有很多。
  • 一种是使用复杂运算结果四舍五入后的最后一位数字。
  • 约翰-冯-诺伊曼的平方取中(middle-square算法被用来生成曼哈顿计划中制造核弹所需的数值计算的数字——将数字平方并从中提取中间的四个数字。
目前标准和最广泛使用的伪随机数生成器是一种叫作Mersenne Twister)的算法,它基于线性同余生成器(linear congruential generator,数字序列从除法的余数中得到:
  • x[n+1]=(a*x[n]+c)mod m
伪随机数的抽样通常是均匀分布的。从均匀分布的随机数据中,人们可以使用反变换抽样生成遵循任何其他分布的随机数——利用累积分布函数的逆来调整随机数据集。
  • 均匀随机数采样发生器在[0,1]范围内生成的数字0.5和0.7881分别对应正常随机数发生器中生成的数字0和0.8——维基百科
加密安全的伪随机数生成器(CSPRNG)除了通过统计随机性测试外,还应该保持不可预测的状态,即使攻击者可以使用它们的部分初始状态或运行状态。大多数伪随机数生成器不适合作为CSPRNG使用。
真随机数生成器(TRNG),混沌的经典系统
  • 熔岩灯在产生随机数方面比电脑要好
对于电子安全和密码学来说,不可预测的不可复制的数字是至关重要的,所以PRNG的使用并不 "足够随机"。与伪随机数生成器相比,真随机数生成器(TRNG)更慢、更复杂,因为它们必须使用外部设备。
真随机数与其说是生成的,不如说是采样的。
经典真随机数生成器是由高熵的混沌宏观物理系统产生的,测量系统的变化。经典真随机数可以由大气噪声、宇宙辐射、开放空间中温度计给出的最后数字等产生。使用经典系统生成真随机数集并不那么困难,而且它比伪随机数集更安全,因为它不是由任何特定的算法生成的。
量子随机性,真正的量子随机数生成器(QRNG)
最好是使用量子力学系统生成随机数。从量子力学的入门课程中,从斯特恩-格拉赫实验中可以知道,量子系统中的一些可测量的量具有内在的不可预测性。为了从量子源产生数据,可以使用非常简单的高熵的量子力学系统。
基于我们今天所知道的--量子世界的底层特征是不可预测的。量子随机性是自然界的根本。
在实践中,随机性的量子源与经典的噪声或确定性因素混合在一起,导致产生的随机序列出现偏差。来自经典源的影响可以在过程中或在后期处理中减少。尽管理论上是完全随机的,但量子协议的实施总是只在一定程度上是安全的,安全性的提高通常是以整体效率为代价的。测试随机性仍然是该过程的一个重要部分,即使对于量子随机数生成器也是如此。

随机性的数学定义‍‍

尽管随着概率论和统计学基础的建立,随机性的概念已经被讨论了至少100年,但随机性的数学定义并不完整。苏联数学家柯尔莫戈洛夫对数学概率论和算法信息理论的建立作出了重要贡献,对数学中的随机性理论做出了巨大的贡献。他在20世纪60年代对随机性的定义是基于计算复杂度的有限字符串。
非正式定义:如果复制字符串的最短方法是打印字符串,则将其视为柯尔莫戈洛夫随机字符串。当且仅当一串比特短于任何能复制该串的计算机程序时,它就是随机的。随机字符串是那些不能被压缩的字符串。最短描述的长度取决于编程语言的选择,但这种效果是有限的。
根据柯尔莫戈洛夫的定义,π不是随机的,因为存在有限的程序可以复制π的任何一位。然而,柯尔莫戈洛夫的随机性定义,也被称为算法随机性,是不完整的。他本人对自己的定义并不满意,能更好地将随机性的不可预测性形式化。
我们总是可以构造一个确定性生成器,它将生成一个通过所有(有限)数量的随机测试的序列。
一些科学家认为,对随机性的严格定义可能超出了数学的范围,因为数学工具可能不足以形成一个框架来定义随机性。问题仍然存在——如果随机性是一个物理概念而不是一个数学概念,它能在数学中正式表述出来吗?


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多