我读过很多关于随机数及其发生器的文章。我通常从这些结论中得出三个重要结论:
因此,考虑到后一种--大部分这些观察结果,我们如何才能
发布于 2012-08-17 15:22:04
我想说的是,只要生成足够大的样本集1,000,000+,就会或多或少地看到(伪随机数)的均匀分散。然而,我相信一些数学天才有一种让人怀疑的方法,因为根据概率定律,你可以得到一个数字的运行,就像其他序列一样。
根据我所读到的,如果你真的需要随机数,最好尝试重复使用密码库所使用的东西。密码学领域具有明显的复杂性,密钥生成依赖于随机数。从OWASP题为“可逆认证令牌”的指南的那一节里说.
生成安全身份验证令牌的唯一方法是确保无法预测它们的顺序。换句话说:真正的随机数。 可以说,计算机不能产生真正的随机数,但使用诸如读取鼠标运动和按键笔画等新技术来改善熵,大大增加了随机数发生器的随机性。重要的是,不要试图自己实现这一点;使用现有的、经过验证的实现是非常可取的。 大多数操作系统都包含生成随机数的函数,这些随机数几乎可以从任何编程语言调用。
我的观点是,除非您自己编写密码库,否则要信任那些自己编写密码库的库(例如,使用Java密码扩展),这样您就不必自己喜欢它了。
发布于 2012-08-17 15:05:34
非常简单的测试:
如果你真的想测试随机数,你可以模拟一个程序输出随机数从1-100倍作为一个例子。然后看看这些数字,看看是否有任何模式。然后,通过多次重新启动程序并重复这个过程来进行测试。检查所有数据,以确定随机数是否总是随机的,只是在单个测试中随机的,还是从来没有。:P
发布于 2012-08-17 15:06:33
测试随机数生成器可能主要取决于您想要查找的内容。即使是纯粹的非重复性也不能保证随机性。
有些公司为了认证的目的将测试随机数发生器(例如在线赌场)。我很快就发现了一个叫做iTech实验室的实验室,尽管他们的测试方法页面在技术细节方面还有很多不足之处。
其他测试人员和认证机构发布认证所需的数据;这里有更具体的细节,但没有您想要的那么多。
您可以进行统计分析,并将随机数生成器的结果与“真”随机源进行比较,但是无论如何,从试图将真正的随机源转换到可能性空间中,都可能存在偏差。
https://stackoverflow.com/questions/12008240
复制相似问题