13

主题

25

回帖

991

积分

优秀创作者

积分
991

夏日·闪闪发光勋章

发表于  2023-6-19 16:40:51 | 显示全部楼层 |阅读模式 3422 0

-- 打乱数组
function Util:shuffle(cubeTb)
    if not cubeTb or self:getTableLength(cubeTb) == 0 then return end
    -- table to array
    local arr = {}
    local keyArr = {}
    for k, v in pairs(cubeTb) do
        table.insert(arr, v)
        table.insert(keyArr, k)
    end
    -- shuffle
    for i = 1, self:getTableLength(arr), 1 do
        local randNum = math.random(1, i)
        arr[i], arr[randNum] = arr[randNum], arr[i]
    end
    -- array to table
    local res = {}
    for i = 1, self:getTableLength(keyArr), 1 do
        res[keyArr[i]] = arr[i]
    end
    return res
end