我无意将其用于安全目的或统计分析。我需要创建一个简单的随机数生成器以用于我的计算机图形应用程序。我不想使用“随机数生成器”一词,因为人们对此非常严格地考虑,但是我想不出任何其他词来形容它。

  • 它必须很快。
  • ,它必须是可重复的,并具有特定的种子。
    例如:如果种子= x,那么每次我使用种子x时,系列a,b,c,d,e,f ...都应该发生。

  • 最重要的是,我需要能够在恒定时间内计算出系列中的第n个项。

    看来,我无法使用rand_r或srand()实现此目的,因为这些需求取决于状态,并且我可能需要以某种未知的顺序来计算第n个。

    我已经看过线性反馈移位寄存器,但是它们也与状态有关。

    到目前为止,我有这个:



    由于使用不够充分,所以我不能说这是好是坏,但是如果有更多经验的人可以指出这个问题或帮助我改进它,那将是很好的。

    编辑-我不在乎它是否可以预测。我只是想在计算机图形中创建一些随机性。

    最佳答案

    CTR mode中使用加密分组密码。第N个输出仅是crypto(N)。这不仅为您提供了所需的属性(第N个输出的O(1)计算);还为您提供了所需的属性。它还具有强大的不可预测性。

    关于algorithm - 简单的随机数生成器,可以在O(1)时间中连续生成第n个数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21949795/

    10-10 23:57