每次运行脚本时,如何生成不同的随机整数?我目前正在进行一项“不可能的测验”,该测验使用随机数从表格中挑选问题。每次运行脚本时,问题的顺序都是一样的。我也使用table.remove()从表中删除问题。但是,它一旦删除就继续问同样的问题,因为它没有选择一个新的随机数(我正在使用math.random(1,#Questions)从'Questions'表中挑选一个随机问题。)
local lives = 3
Questions = {
{"What is the magic word?", "lotion"},
{"Does anyone love you?", "no"},
{"How many fingers do you have?", "10"},
{"What is 1 + 1?", "window"}
}
function lookForAnswer(ans)
table.remove(Questions[number])
local input = io.read() tostring(input)
if input:lower() == ans then
return true
end
lives = lives - 1
if lives <= 0 then
exit()
end
return false
end
for i = 1, #Questions do
number = math.random(1, #Questions)
local q = Questions[number][1]
local a = Questions[number][2]
print(q)
if lookForAnswer(a) then
print("Correct!\n")
else
print("WRONG! Lives: " .. lives .. "\n")
end
end
io.read()
答案 0 :(得分:2)
在调用 math.random()之前,您需要通过调用 math.randomseed()来播种随机数生成器。使用 os.time()作为种子值( math.randomseed(os.time())非常常见。
重要的是要注意 math.random()是确定性的,因此熵必须来自种子值。如果您将相同的值传递给种子,您将获得相同的值 math.random()。由于 os.time()只有分辨率低至秒,这意味着如果您在给定秒内多次调用该命令,您将获得相同的值。如果您愿意,可以尝试使用更多的熵源进行播种(/ dev / random)。
只是为了澄清,如果它真的是随机的,你不能保证每次都会有不同的值。您所能做的就是确保您获得相同值的概率足够低。
祝你好运。