1

我编写了一个名为“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()直到一秒钟才改变。那么,如果运行 lua 脚本的时间差小于 1 秒,如何在 lua 中获取随机数。

4

1 回答 1

0

移出math.randomseed(os.time())函数。

math.randomseed每次打电话之前都需要先打电话似乎是一个常见的误解math.random。这是错误的,并且会破坏 的随机性math.random,特别是如果您将os.time()其用作种子,因为种子在一秒钟内都是相同的。

于 2016-03-03T10:26:23.280 回答