Random PRNG所需的建议

Random PRNG所需的建议,random,prng,Random,Prng,我正在寻找一种伪随机数生成算法,能够生成128-/256位的随机数。安全性和密码完整性并不重要;简单性和性能是最重要的。理想情况下,该算法将可用于现代移动电话平台。你能推荐这样的算法吗?可行吗?提前谢谢 您应该试试SFMT:SIMD导向的快速梅森捻线机。 该PRNG旨在利用处理器提供的向量指令生成128位整数 有关此PRNG的更多信息,请参阅我通过建议SFMT回复的另一篇帖子: 有关完整的说明,请参见官方页面,您也可以在其中下载SFMT:如果简单性是您的首要任务,请查看中的生成器。生成器的核心只

我正在寻找一种伪随机数生成算法,能够生成128-/256位的随机数。安全性和密码完整性并不重要;简单性和性能是最重要的。理想情况下,该算法将可用于现代移动电话平台。你能推荐这样的算法吗?可行吗?提前谢谢

您应该试试SFMT:SIMD导向的快速梅森捻线机。
该PRNG旨在利用处理器提供的向量指令生成128位整数

有关此PRNG的更多信息,请参阅我通过建议SFMT回复的另一篇帖子:


有关完整的说明,请参见官方页面,您也可以在其中下载SFMT:

如果简单性是您的首要任务,请查看中的生成器。生成器的核心只是两行代码。它不像Mersenne捻线机那样先进,但它更简单,仍然具有良好的统计特性。

这是小(128位状态)和快速,并通过了每一个通用统计测试在这个时候可用。到目前为止,响应中链接到的所有其他PRNG都未通过快速测试-基于MWC的PRNG未通过许多测试,而SFMT仅未通过二进制矩阵秩/线性复杂度类型测试


正如其他人所说,要获得128位,只需将顺序32位输出串联起来。不要强行从PRNGs状态中提取其正常输出功能产生的更多比特-这通常会降低输出质量,有时会大幅降低

为什么不使用内置在您的语言或工具包的公共库中的东西呢?没有必要重新发明轮子,特别是在简单性很重要的情况下。可移植性是一个问题,因此语言并不重要;我应该澄清一下。此外,许多语言的随机数实现最多只能提供32位数字。@Dan一种可能是使用标准实现,并在必要时扩展到更多位(即,使用4个32位数字,您将有128位)@Howard问题是,仍然只有2^32个可能的随机数序列。大多数重量级PRNG在API中只提供32位,但寄存器的状态至少与您的输出大小要求一样大。连续调用通常只复制32位的状态块,直到该状态块用完,然后再运行另一个置换以获得更多的位。您只需在其中任何一个上安装API即可。您的MWC实现无法满足@Dan的要求:他需要一个能够生成128-/256位数字的PRNG。