了解随机数生成

时间:2015-04-14 03:13:55

标签: random game-maker

我创造了一个游戏,我想要创建随机世界,让玩家可以选择通过输入相同的种子再次制作相同的世界...... 那么......我怎么能这样做?它会生成相同的数字集,但每次调用随机函数时都不一样......

我是否必须手动根据种子进行排序功能?

2 个答案:

答案 0 :(得分:1)

在GameMaker Studio和GameMaker 8.1中有一个功能: random_set_seed(seed)

在这里你可以输入你的种子。 然后random(x)在每场比赛中给出相同的第n个结果。

random(100)
randomize() // This doesn't change rand[0] or rand[1]

random_set_seed(20) // because of this
rand[0]=random(100)
rand[1]=random(100)

答案 1 :(得分:1)

随机函数函数要么使用似乎给出随机数的数学公式,要么只查看已计算的看似随机数的数组并按顺序返回它们。在大多数语言中,有一个函数可以查看计算机的时钟,并将该值用作数学公式的第一个值或伪随机数组中的起始索引。在GameMaker中,您可以使用randomize()来执行此操作。只有在游戏启动时调用一次,并且每次执行都会得到不同的结果。

如果您想要相反,那就是您希望能够重新生成相同的看似随机的序列,您可以使用random_set_seed(value)手动设置种子。传递的值必须是数字。然后你可以把这粒种子交给玩家。

因此,如果您想第一次生成随机级别,之后能够重播相同级别,则需要按顺序执行:

  • 致电randomize设置随机种子。
  • 调用将返回当前种子的random_get_seed
  • 致电random等人生成关卡。
  • 当玩家想要使用与以前相同的种子时,请致电random_set_seed并传递种子。
  

警告:通过使用这些功能,您可以信赖GM的随机功能。这些是依赖于平台的,并且功能可能会在更高版本的GM中发生变化。如果您希望种子适用于游戏的所有平台和版本,您可能希望使用自己的随机函数。