Random 理解随机数生成

Random 理解随机数生成,random,game-maker,Random,Game Maker,我正在创建一个游戏,我想创建一个随机的世界,让玩家可以选择通过输入相同的种子再次创建相同的世界。。。 所以我该怎么做?它将生成相同的数字集,但不是每次调用随机函数时都会生成相同的数字集 我必须手动根据种子进行排序吗?在GameMaker Studio和GameMaker 8.1中有一个函数: random\u set\u seed(种子) 在这里你可以输入你的种子。 然后,random(x)在每次游戏运行中给出相同的第n个结果 random(100) randomize() // This do

我正在创建一个游戏,我想创建一个随机的世界,让玩家可以选择通过输入相同的种子再次创建相同的世界。。。 所以我该怎么做?它将生成相同的数字集,但不是每次调用随机函数时都会生成相同的数字集


我必须手动根据种子进行排序吗?

在GameMaker Studio和GameMaker 8.1中有一个函数:
random\u set\u 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)

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

如果您想要相反的结果,即您希望能够重新生成相同的看似随机的序列,则可以使用
random\u set\u seed(value)
手动设置种子。传递的值必须是数字。然后你可以把种子给玩家

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

  • 调用
    randomize
    设置随机种子
  • 调用将返回当前种子的
    random\u get\u seed
  • 调用
    random
    并生成一个级别
  • 当玩家想要使用与之前相同的种子时,调用
    随机设置\u seed
    并将种子传递给它
警告:通过使用这些函数,您信任GM的随机函数。这些是平台相关的,功能可能会在更高版本的GM中更改。如果您希望种子在所有平台和游戏版本中都能工作,您可能需要使用自己的随机化功能


我想要的一个很好的例子是Minecraft worlds的工作方式……了解随机数是如何在您选择的语言/框架中生成的,这将是一个很好的开始,并让您改进您的问题。提示:thx。有点累,因为我整晚都在做。谢谢你的回答。。但我没有找到我在这里寻找的答案!假设您有一个“创建世界”按钮和一个种子输入。每次单击“创建世界”(之前随机()调用的次数不受限制)时,每次都需要创建相同的世界。当我尝试它的时候,它不会。。。