如何实现伪随机函数

问题描述 投票:3回答:3

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

  • 我该如何实现自己的伪随机函数?
  • 甚至可以生成与平台无关的伪随机数?
algorithm random
3个回答
8
投票

对的,这是可能的。

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

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

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

更新2019年

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


2
投票

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


0
投票

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

这为var提供了一个可用于其id的4位数字

如果您使用其他语言,则可能存在类似的模块

© www.soinside.com 2019 - 2024. All rights reserved.