【问题标题】:What is the random number algorithm with the longest periodicity?周期最长的随机数算法是什么?
【发布时间】:2012-02-01 17:58:39
【问题描述】:

我想创建一个随机数函数,但我不想使用任何已经创建的rand() 函数或方法。

是否有一个众所周知的算法或理论可供我参考?

【问题讨论】:

  • “最佳”的标准是什么?预先存在的功能有什么问题?
  • 我用我的便携式回旋加速器,纠缠电子和反电子,等待湮灭,然后从产生的能量签名中获取我的随机值。
  • 我希望创建尽可能大的周期兰特,不管我会花费多少硬件资源,预先存在的简单且创建速度快。
  • 任何像样的算法都会有一个很好的预先存在的实现,不一定是编译器提供的rand函数。
  • 乘法进位可以有很大的周期(取决于常数)而不需要太多的状态位。

标签: c algorithm random


【解决方案1】:

你几乎肯定想要linear congruential pseudo-random number generator

http://en.wikipedia.org/wiki/Linear_congruential_generator

维基百科文章中有一些标准可以确定给定的一组参数是否具有可能的最大周期。

【讨论】:

  • 我在想这样的事情。谢谢你。我会深入研究一下。
【解决方案2】:

选择两个不同周期的 PRNG,P_1 和 P_2。输出两个发生器单独输出的异或。组合生成器的周期为 (P_1 * P_2) / GCD(P_1, P_2)。还有其他方法可以组合生成器以提供长周期,但这是最简单的方法之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2015-07-28
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    相关资源
    最近更新 更多