我正在寻找一种能够产生随机 128/256 位数字的伪随机数生成算法。安全性和密码完整性并不重要;简单性和性能是最重要的。理想情况下,该算法将可用于现代手机平台。你能推荐这样的算法吗?可行吗?提前致谢!
3 回答
0
http://burtleburtle.net/bob/rand/smallprng.html
它很小(128 位状态)且速度很快,并且通过了目前可用的所有通用统计测试。到目前为止,与此处响应相关的所有其他 PRNG 都无法通过快速测试——基于 MWC 的 PRNG 无法通过许多测试,而 SFMT 仅无法通过二进制矩阵秩/线性复杂度类型测试。
正如其他人所说,要获得 128 位,只需连接连续的 32 位输出。不要强行从 PRNG 状态中提取其正常输出函数产生的更多位 - 这通常会降低输出质量,有时会大量降低。
于 2014-11-26T22:18:23.100 回答
0
您应该尝试 SFMT:面向 SIMD 的 Fast Mersenne Twister。
此 PRNG 旨在通过利用处理器提供的向量指令来生成 128 位整数。
有关此 PRNG 的更多信息,请查看我通过建议 SFMT 回答的另一篇文章:最佳伪随机数生成器
完整描述见官方页面,也可以下载SFMT: http: //www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
于 2011-06-12T16:14:51.770 回答
0
如果简单是您的首要任务,请查看本文中的生成器。生成器的核心只是两行代码。它不像 Mersenne Twister 那样最先进,但它更简单并且仍然具有良好的统计特性。
于 2011-06-12T17:28:25.840 回答