如何实现伪随机函数

时间:2013-02-15 19:22:10

标签: algorithm random

我想生成一系列随机数,用于为“迷宫”挑选瓷砖。每个迷宫都有一个id,我想将该id用作伪随机函数的种子。这样我可以一遍又一遍地生成相同的迷宫,因为它是迷宫ID。最好我不想在语言中使用内置的伪随机函数,因为我无法控制算法,它可能会从平台变为平台。因此,我想知道:

  • 我应该如何实现自己的伪随机函数?
  • 生成与平台无关的伪随机数是否可行?

3 个答案:

答案 0 :(得分:8)

是的,这是可能的。

Here是用于产生噪声的这种算法(及其用途)的一个例子。

那些特定的随机函数(Noise1,Noise2,Noise3,..)使用输入参数并从那里计算伪随机值。 它们的输出范围是0.0到1.0。

还有更多(如评论中所述)。

更新2019年

回顾这个答案,更合适的选择是下面提到的mersenne twister。或者您可以找到xorshift的任何实现。

答案 1 :(得分:2)

Mersenne Twister可能是一个不错的选择。正如您可以从维基百科上的伪代码中看到的那样,您可以使用您喜欢的任何内容为RNG播种,以便为具有该种子的任何实例生成相同的值。在您的情况下,迷宫ID或迷宫ID的散列。

答案 2 :(得分:0)

如果您使用的是Python,可以在开头键入随机模块, 随机导入。然后,要使用它,您键入 -     var = random.randint(1000,9999)

这给var一个4位数字,可用于其id

如果您使用其他语言,可能会有类似的模块