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



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

文章图片

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

文章图片


如何获得 \"真正的 \"随机数?
检查薛定谔的猫 , 并根据猫是活的还是死的生成0或1 , 这是生成随机数的一个很好的方法 。
英国统计学家蒂佩特在1927年发表了第一张随机数表 。 这张表上的数字由从人口普查登记册中“随机”收集的数字组成 。尽管蒂佩特的随机数表在当时被成功地用于验证和发现新的分布规律 , 但事实证明 , 书中给出的数字无法通过很多现代的随机性测试 。 此外 , 各种研究都认为 , 我们(人类)很难生成真正的随机数 。 但随着物理学的发展 , 我们找到了比投掷骰子更有效地生成随机数的方法 。 今天 , 我们离在智能手机上建立量子随机数生成器(QNRG)的光子探测器芯片不远了——这将基于量子叠加原理 。
我们为什么需要随机数??
数百亿元的加密行业需要随机数作为基本资源 。 从虚拟游戏中的发牌等简单应用到解决现代IT行业的加密问题 , 随机数都是必不可少的 。 在统计分析和控制过程中 , 在蒙特卡洛类型的数值模拟中 , 在具有非确定性行为的人工智能(AI)算法中 , 或在遗传算法中模拟神经网络和进化 , 也经常需要随机数据 。
如何获得 \"真正的 \"随机数??随机数生成器可分为软件生成器和硬件生成器 。 每一类中的一个子类会遇到网络安全的随机数生成器 。
伪随机数生成器(PRNG)
获得随机数的一种有效方式是通过算法生成随机数 , 这些随机数对许多应用来说已经足够好 。 以这种方式获得的 \"随机 \"数被称为伪随机数 , 因为它们在知道初始参数和使用的算法后很容易被复制 , 这意味着它们是确定的 。 可复制的随机数据集在某些情况下可能是有益的 , 但如果别人能复制它们 , 它们在加密应用中一般是不安全的 。
【为什么很难给出“随机性”的数学定义?如何获得真正的随机数?】
伪随机数的缺点是 , 算法是完全可预测的 。 此外 , 所有伪随机数的序列最终都会重复 。
伪随机数生成器(PRNG)的算法有很多 。
  • 一种是使用复杂运算结果四舍五入后的最后一位数字 。
  • 约翰-冯-诺伊曼的平方取中(middle-square)算法被用来生成曼哈顿计划中制造核弹所需的数值计算的数字——将数字平方并从中提取中间的四个数字 。
目前标准和最广泛使用的伪随机数生成器是一种叫作Mersenne Twister)的算法 , 它基于线性同余生成器(linear congruential generator) , 数字序列从除法的余数中得到:
  • x[n+1
    =(a*x[n
    +c)mod m
伪随机数的抽样通常是均匀分布的 。 从均匀分布的随机数据中 , 人们可以使用反变换抽样生成遵循任何其他分布的随机数——利用累积分布函数的逆来调整随机数据集 。
  • 均匀随机数采样发生器在[01
    范围内生成的数字0.5和0.7881分别对应正常随机数发生器中生成的数字0和0.8——维基百科
加密安全的伪随机数生成器(CSPRNG)除了通过统计随机性测试外 , 还应该保持不可预测的状态 , 即使攻击者可以使用它们的部分初始状态或运行状态 。 大多数伪随机数生成器不适合作为CSPRNG使用 。
真随机数生成器(TRNG) , 混沌的经典系统
  • 熔岩灯在产生随机数方面比电脑要好
对于电子安全和密码学来说 , 不可预测的不可复制的数字是至关重要的 , 所以PRNG的使用并不 \"足够随机\" 。 与伪随机数生成器相比 , 真随机数生成器(TRNG)更慢、更复杂 , 因为它们必须使用外部设备 。

真随机数与其说是生成的 , 不如说是采样的 。
经典真随机数生成器是由高熵的混沌宏观物理系统产生的 , 测量系统的变化 。 经典真随机数可以由大气噪声、宇宙辐射、开放空间中温度计给出的最后数字等产生 。 使用经典系统生成真随机数集并不那么困难 , 而且它比伪随机数集更安全 , 因为它不是由任何特定的算法生成的 。
量子随机性 , 真正的量子随机数生成器(QRNG)

推荐阅读