Lua一些简单的对数组(table)的操作和封装

Lua中没有数组,但是可以通过表(table)来模拟数组,为了便于理解,本文的所有对表的操作都称为数组,值得注意的是,Lua数组下标是从1开始,而不是0。

1.Lua之产生若干个指定范围的不重复的随机数

先直接上代码

function getNRandom(startNum, endNum, number, exceptTable) -- 一个产生不重复随机数的方法
    local cha = endNum - startNum + 1
    if cha< number then
        print("产生的个数已经超过了,检查你的随机数范围和个数是否合理")
        return
    end
    local numberTabel = {}
    local num = 0
    local isExist = false -- 用这个判断是否已经存在这个数了
    local i = 0
    while (i < number) do 
        isExist = false
        local randomNum = math.random(startNum, endNum)
        print("产生的随机数为:", randomNum)
        local function isExisting() -- 检测数组里面是否已经存在了这个随机数了,有就返回true
            if #numberTabel ~= 0 then
                for k, v in pairs(numberTabel) do 
                    if randomNum == v then
                        print("发现产生了一个相同的随机数,所以不能再加到那里面去了")
                        return true
                    end
                end
            end
            if #exceptTable ~= 0 then
                for k, v in pairs(exceptTable) do
                    if randomNum == v then
                        print("发现产生了一个已经点过的随机数,要除开,不能要")
                        return true
                    end
                end
            end 
        end
        isExist = isExisting()
        if isExist then  -- 如果已经存在了这个数,那么久返回,并且要把i-1
            
            
        else
            table.insert(numberTabel, randomNum)
            i = i + 1
        end


    end
    return numberTabel

end

参数依顺序分别为:最小的数,最大的数,产生的数的个数,要排除的数的数组(表)。
如果你传入的数范围不对,比如你传入最小为1,最大为10,你非要产生15个不同的随机数,那就是不可能的,所以这里在最前面就判断,当范围不对的时候就返回。

2.Lua之删除指定下标的数组(table)中的元素

如果是删除你知道的某一个index的元素,那当然简单了用table.remove()方法即可,但是这里我知道下标也是一个数组形式的,比如有某一个数组为tabel1 = {1, 3, 5, 7, 9},我想删除的下标的数组为removeIndexTable = {3, 5, 2}得到一个新的数组

你可能感兴趣的:(Lua一些简单的对数组(table)的操作和封装)