我正在寻找一种伪随机数生成算法,能够产生一个随机的128/256位数。安全性和加密完整性并不重要;简单性和性能高于一切。理想情况下,该算法将在现代移动电话平台上使用。你能推荐这样的算法吗?这可行吗?提前感谢!
发布于 2011-06-13 00:14:52
你应该试试SFMT:面向SIMD的Fast Mersenne Twister。
该PRNG被设计为通过利用处理器提供的向量指令来产生128位整数。
有关这个项目的更多信息,请看看我回复的另一个帖子:best pseudo random number generator
要获得完整的描述,请参阅官方页面,在那里您也可以下载SFMT:http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
发布于 2011-06-13 01:28:26
如果您最看重的是简单性,请查看this article中的生成器。生成器的核心只有两行代码。它不像Mersenne Twister那样是最先进的,但它更简单,并且仍然具有良好的统计特性。
发布于 2014-11-27 06:18:23
http://burtleburtle.net/bob/rand/smallprng.html
这是小的(128比特的状态)和快速的,并且通过了目前可用的所有通用统计测试。到目前为止,链接到这里的所有其他PRNG都未能通过快速测试-基于MWC的PRNG未能通过许多测试,而SFMT仅未能通过二进制矩阵秩/线性复杂度类型测试。
正如其他人所说,要获得128位,只需连接顺序的32位输出。不要从正常输出函数产生的PRNG状态中强制提取更多的位-这通常会降低输出质量,有时会降低很大的质量。
https://stackoverflow.com/questions/6216807
复制相似问题