2011-06-02 50 views
0

我正在寻找能够产生随机128位/ 256位数的伪随机数生成算法。安全和密码完整性并不重要;简单性和性能的价值高于一切。理想情况下,该算法可用于现代手机平台。你能推荐这样的算法吗?这可行吗?提前致谢!PRNG所需的建议

+5

为什么不使用内置于您的语言或工具箱公共库中的东西?没有必要重新发明轮子,尤其是在简单性问题时。 – 2011-06-02 15:41:01

+0

对。评论被撤销。 – Nate 2011-06-02 16:20:44

+0

可移植性是一个问题,所以语言并不重要;我应该澄清一点。而且,许多语言的随机数实现只能提供高达32位的数字。 – Dan 2011-06-02 16:36:05

回答

0

如果简单是您的首要任务,请查看this article中的发生器。发生器的核心是两行代码。这不像Mersenne Twister这样的先进技术,但它更简单,而且仍然具有良好的统计特性。

+0

您的MWC实施不符合Dan的要求:他需要能够产生128位/ 256位数字的PRNG。 – jopasserat 2011-06-12 19:44:36

0

http://burtleburtle.net/bob/rand/smallprng.html

即小的(状态的128位)和快速并通过可在这个时候每一个通用的统计检验。到目前为止,在响应中链接到的每个其他PRNG都无法快速进行测试 - 基于MWC的PRNG不能通过许多测试,而SFMT只能通过二进制矩阵秩/线性复杂类型测试。正如其他人所说的,要获得128位简单地连续连续的32位输出。不要从PRNGs状态强行提取其正常输出功能产生的更多位 - 这通常会降低输出质量,有时会大量降低输出质量。