Luaのいくつかの簡単な配列(table)に対する操作とパッケージ

1947 ワード

Luaには配列はありませんが、テーブル(table)で配列をシミュレートすることができます.理解しやすいように、本明細書のすべてのテーブルに対する操作を配列と呼びます.Lua配列の下付き文字は0ではなく1から始まることに注意してください.
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の削除指定した下付き配列の要素
あなたが知っているindexの要素を削除するなら、もちろんtableを使います.remove()メソッドでいいのですが、ここでは下付き文字も配列形式であることを知っています.例えば、ある配列がtabel 1={1,3,5,7,9}であり、削除したい下付き文字の配列がremoveIndexTable={3,5,2}で新しい配列が得られます.