调用math.randomseed(os.time())时堆栈溢出

时间:2017-01-04 00:54:33

标签: lua

好的,所以我在Lua编写了一个涉及随机数字的程序,它运行正常...没有math.randomseed(os.time())

当我添加它时,它会导致math.randomseed(os.time())

行的堆栈溢出

我的代码显示在这里:

local group1stregnths = 0
local group2stregnths = 0

function balancestregnths()
    math.randomseed(os.time())
    local assignedstrengths = math.random(1,6)

    if assignedstrengths == 1 then
        if group1stregnths == 2 then
            balancestregnths()
        end
        if group1stregnths < 2 then
            group1stregnths = group1stregnths + 1
        end
    end

    return assignedstrengths
end

这是溢出......

lua: Main.lua:17: stack overflow
stack traceback:
    Main.lua:17: in function 'balancestregnths'

任何帮助?

1 个答案:

答案 0 :(得分:2)

您不能在程序中多次调用randomseed。每次拨打balancestregnths时,您都会继续重置种子,这意味着您可以随机获取相同的随机数量。序列。该序列导致非终止递归调用。

尝试将math.randomseed(os.time())移至脚本顶部。