我想生成一个随机数序列,用于为“迷宫”挑选瓷砖。每个迷宫都有一个 id,我想用那个 id 作为伪随机函数的种子。这样我就可以一遍又一遍地生成相同的迷宫,因为它是迷宫 id。最好我不想在语言中使用内置的伪随机函数,因为我无法控制算法并且它可能会因平台而异。因此,我想知道:
- 我应该如何实现自己的伪随机函数?
- 生成独立于平台的伪随机数是否可行?
对的,这是可能的。
这是用于噪声生成的此类算法(及其用途)的示例。
那些特定的随机函数(Noise1、Noise2、Noise3、..)使用输入参数并从那里计算伪随机值。它们的输出范围是从 0.0 到 1.0。
还有更多(就像评论中提到的那样)。
2019 年更新
回顾这个答案,更适合的选择是下面提到的mersenne twister
. 或者您可以找到xorshift
.
Mersenne Twister可能是一个不错的选择。正如您从 wikipedia 上的伪代码中看到的那样,您可以使用您喜欢的任何内容为 RNG 播种,从而为具有该种子的任何实例生成相同的值。在您的情况下,迷宫 ID 或迷宫 ID 的哈希值。
如果您使用的是 Python,则可以通过在开头键入 import random 来使用 random 模块。然后,要使用它,你输入- var = random.randint(1000, 9999)
这为 var 提供了一个 4 位数字,可用于其 id
如果您使用的是另一种语言,则可能有类似的模块