Luaのいくつかの簡単な配列(table)に対する操作とパッケージ
1947 ワード
Luaには配列はありませんが、テーブル(table)で配列をシミュレートすることができます.理解しやすいように、本明細書のすべてのテーブルに対する操作を配列と呼びます.Lua配列の下付き文字は0ではなく1から始まることに注意してください.
1.Luaの発生複数の指定範囲の重複しない乱数
まず直接コードをつける
パラメータは、最小の数、最大の数、発生した数の個数、除外する数の配列(テーブル)の順になります.もしあなたが入ってきた数の範囲が間違っていたら、例えばあなたが入ってきた最小が1で、最大が10で、15の異なる乱数を生成しなければなりません.それは不可能です.だから、ここでは一番前に判断して、範囲が間違っているときに返します.
2.Luaの削除指定した下付き配列の要素
あなたが知っているindexの要素を削除するなら、もちろんtableを使います.remove()メソッドでいいのですが、ここでは下付き文字も配列形式であることを知っています.例えば、ある配列がtabel 1={1,3,5,7,9}であり、削除したい下付き文字の配列がremoveIndexTable={3,5,2}で新しい配列が得られます.
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}で新しい配列が得られます.