Random 一个人怎么知道他看到了一个随机数发生器?

Random 一个人怎么知道他看到了一个随机数发生器?,random,proof,perception,Random,Proof,Perception,我一直在阅读各种关于随机数及其生成器的文章。我通常从中得出三个重要结论: 随机数不是真正的随机数 大多数情况下,它们都有偏差(模偏差) 当人类试图“随机行动”时,他们无法成为随机数发生器 那么,考虑到这些观察中的后者,我们如何能够 告诉我们看到的一系列数字是否真的是随机的,更重要的是 有什么方法可以证明这个序列是随机的吗 非常简单的测试: 如果您真的想开始测试随机数,您可以模拟一个程序,以输出1-100次随机数为例。 然后看看这些数字,看看是否有任何模式。然后,通过多次重新启动程序并重复该过

我一直在阅读各种关于随机数及其生成器的文章。我通常从中得出三个重要结论:

  • 随机数不是真正的随机数
  • 大多数情况下,它们都有偏差(模偏差)
  • 当人类试图“随机行动”时,他们无法成为随机数发生器
那么,考虑到这些观察中的后者,我们如何能够

  • 告诉我们看到的一系列数字是否真的是随机的,更重要的是
  • 有什么方法可以证明这个序列是随机的吗
  • 非常简单的测试:

    如果您真的想开始测试随机数,您可以模拟一个程序,以输出1-100次随机数为例。 然后看看这些数字,看看是否有任何模式。然后,通过多次重新启动程序并重复该过程来遵循该测试。
    检查所有数据,以确定随机数是否始终是随机的,只是在单独测试期间随机的,还是从不随机的:P

    测试随机数生成器可能主要取决于您想要查找的内容。即使是纯粹的不可重复性也不能保证随机性

    有些公司将测试随机数生成器以进行认证(例如在线赌场)。我很快找到了一个叫做iTech实验室的实验室,不过在技术细节方面还有很多需要改进的地方

    其他测试人员和认证机构;这里有更具体的细节,但没有你想要的那么多


    您可能会进行统计分析,并将随机数生成器的结果与“真实”随机源进行比较,但这可能是因为尝试将真实随机源转换为可能性空间时存在偏差。

    随机性测试验证了序列的数学属性。例如,输入频率(所有符号预期具有相同的频率)、局部方差、序列分析(符号的概率不得取决于之前的符号)。 一个明确的证明并不存在,但有一个质量因素——序列真正随机的概率。 另一个标准可以基于可压缩性:真实随机性具有最大熵,因此不能被压缩。
    当然,这种测试对于随机性来说并不可靠,但它允许使用诸如zlib之类的现成工具进行快速而肮脏的测试

    我想说,只要生成足够大的样本集1000000+,就会或多或少地看到(伪)随机数的均匀分散。然而,我相信一些数学天才有办法怀疑这一点,因为根据概率定律,你可以得到一个数字的运行,就像任何其他序列一样

    从我所读到的内容来看,如果您真的需要随机数,那么最好尝试并重用加密库使用的内容。密码学领域显然很复杂,密钥生成依赖于随机数。从它的部分说

    生成安全身份验证令牌的唯一方法是确保 没有办法预测它们的顺序。换句话说:真正的随机 数字

    可以说计算机不能产生真正的随机信号 数字,但使用新技术,如读取鼠标移动和 提高信息熵的按键显著增加了 随机数生成器的随机性。重要的是,你不应该这样做 试着自己实现这一点;使用现有的、经验证的 实现是非常可取的

    大多数操作系统都包含生成随机数的函数 这几乎可以从任何编程语言调用

    我的观点是,除非您自己编写加密库,否则请信任那些加密库(例如,使用Java加密扩展),这样您就不必自己验证它