如果我创建一个简单的lua脚本文件:
test.lua
#!/usr/bin/env lua
local var = math.random(100)
print(var)
在调用时它总是会打印相同的值,即使它在每次调用时确实应该是一个新的随机值。
我的猜测是脚本被编译(?)到例如:
#!/usr/bin/env lua
local var = 82
print(var)
(如果82是第一次通话时的随机值)
每次调用脚本时,我能做些什么来确保新的(?)字节码被编译(?),这样我每次执行脚本时都可以得到一个新的随机值?
我添加(?)的原因是我甚至不知道脚本是否完全被编译或者在调用它们时会发生什么,但是这样的事情显然正在发生,因为我得到了相同的值所有时间。的
答案 0 :(得分:6)
您的脚本不会保留为字节码,只是在每次运行时都使用相同的默认随机种子。这会产生你所看到的效果:每次运行脚本时都会得到相同的“随机”序列。
您应该通过执行来初始化它,例如
math.randomseed(os.time())