我正在为 iOS 和 OSX 的 Lua 开发一个 roguelike。对 Lua 来说还很陌生,令我沮丧的是,我发现我的平台上的非随机 math.random是如何的。我已经设置了通过函数设置的随机数调用:
function rollD(max)
return math.random(max)
end
所以我找到了一个很棒的答案来回应这篇文章,结果证明我认为这可以解决我的问题(对于 roguelike 来说,每次游戏都不同是非常关键的)但是为了做出以下调整功能:
function rollD(max)
return srandom(seedobj,1,max)
end
工作,我必须做:
local seedobj = { seed = -232343 }
来自 Donati 的 Knuth 改编不再是本地的,然后实际修改为使用 (os.time()*-1)。到目前为止,这实际上工作得很好,我的(非常初级的)roguelike 正在像我想要的那样卷起随机的坏人和地牢。但是当事情正常时我担心......
随着对srandom的大量调用(每个级别可能超过一千次调用),我是否会因为将seedobj设置为全局而受到某种性能影响?我想这样想,因为它嵌套在表格中,所以种子是一个参考,我什么都不担心。但除此之外:有没有办法修改这个函数,以便更有效地调用它?