【问题标题】:Lua Random number generator always produces the same numberLua 随机数生成器总是产生相同的数字
【发布时间】:2018-10-10 17:30:30
【问题描述】:

我查阅了几个关于如何使用 lua 生成随机数的教程,每个教程都说要使用 math.random(),所以我做到了。然而,每次我使用它时,我每次都得到相同的数字,我尝试重写代码,我总是得到尽可能低的数字。我什至包括了一个基于操作系统时间的随机种子。代码如下。

require "math"
math.randomseed(os.time())
num = math.random(0,10)
print(num)

【问题讨论】:

  • 您的代码在 lua.org/demo.html 的 Lua 演示中生成不同的数字。注释 require 行以在那里运行它。
  • 这可能是我正在使用的程序。它是使用 eclipse 的 Lua 开发工具
  • 您可能需要在两次运行之间等待一秒钟才能看到不同的数字。
  • 就是这样,它总是给我相同的数字,总是尽可能低的数字。
  • @DragonProgram 试试这个:local seed = os.time() print(seed) math.randomseed(seed)seed 每次都一样吗?也就是说,os.time() 每次都返回相同的数字吗?

标签: random lua


【解决方案1】:

我正在使用这样的随机函数:

math.randomseed(os.time())
num = math.random() and math.random() and math.random() and math.random(0, 10)

这工作正常。另一种选择是改进内置的随机函数,描述为here

【讨论】:

  • 我强烈建议不要这样做,除非您清楚地了解伪随机数生成器 (prng) 的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 2011-06-25
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多