我写了一个名为" 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 脚本时,上面的函数没有生成如下所示的randome值:
for ((i=0;i<=5;i++)); do lua lua_rand_gen; done
717952767
717952767
717952767
717952767
717952767
717952767
我知道这是因为 os.time()不会改变到一秒钟。那么,如果运行lua脚本的时间差小于1秒,我怎么能得到lua中的随机数。
答案 0 :(得分:0)
将math.randomseed(os.time())
移到功能之外。
在每次致电math.randomseed
之前,您需要致电math.random
,这似乎是一种常见的误解。这是错误的并且会破坏math.random
的随机性,特别是如果你使用os.time()
作为种子,因为种子将在一整秒内相同。