【问题标题】:Lua random numbers output the same every run [duplicate]Lua随机数每次运行都输出相同[重复]
【发布时间】:2015-11-10 18:33:19
【问题描述】:

为什么这个函数的运行每次都输出相同的数字,我该如何解决?

function randomNumber()
    number = math.random()
    print(number)
end

randomNumber()
randomNumber()

编辑:我希望能够像这样运行这个函数两次,并且两次都得到一个唯一的随机数。

【问题讨论】:

    标签: function random lua


    【解决方案1】:

    看起来像是播种问题。把它放在开头:

    math.randomseed( os.time() )
    

    欲了解更多信息:http://lua-users.org/wiki/MathLibraryTutorial

    【讨论】:

    • 有没有办法让它在我想要的时候生成一个新的种子,而不是每秒?
    • math.randomseed() 只是设置它给出的种子。 os.time() 以秒为单位返回一次当前时间,这对于种子来说始终是唯一且完美的。如果您希望随机数在多次运行中保持一致,则可以将其替换为特定数字。查看链接的网址以获取更多信息。
    • 我明白,但是通过使用 os.time() 我只能每秒生成一个唯一的随机数。
    • 对,您可以只拥有一个以os.time() 开头的全局变量,并在您想要生成新的唯一种子时将其加一。
    • 您可以使用任何随机来源。例如math.randomseed((("I4"):unpack(assert(assert(io.open("/dev/urandom")):read(4)))))
    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 2018-09-08
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    相关资源
    最近更新 更多