如何在每次运行 lua 脚本时生成不同的随机值

我编写了一个名为 "lua_rand_gen" 的 lua 脚本,包含以下代码:

function random_number_func()
    math.randomseed(os.time())
    return (math.random(100000000,999999999))
end

print (random_number_func())

当我循环运行 lua_rand_gen 脚本时,上述函数没有生成随机值,如下所示:

for ((i=0;i<=5;i++)); do lua lua_rand_gen; done

717952767
717952767
717952767
717952767
717952767
717952767

我知道这是因为 os.time() 时间差不到1秒,所以我该如何在 lua 中获取随机数呢?

点赞
用户107090
用户107090

math.randomseed(os.time()) 移到函数外面。

许多人错误地认为在每次调用 math.random 之前需要调用 math.randomseed。这是 错误 的,这样做会破坏 math.random 的随机性,特别是如果使用 os.time() 作为种子,因为种子会在整个一秒钟内保持相同。

2016-03-03 10:26:23