如何正确有效地随机播放表的内容?

时间:2019-03-16 01:51:40

标签: lua

我正在尝试随机调整表的内容。它工作正常,除非有时它不返回表的所有内容。在改组之前,我打印了表的一些键,它们返回nil,但是我不确定如何解决。这是Lua:

local tab = {1,2,3,4,5,6,7,8,9,10}

function ReturnRandomTable(t)
   local newt = {}
   local i = 1
   repeat
      local rand = math.random(1,#t)
      newt[i] = t[rand]
      print(t[rand]) --sometimes prints nil
      t[rand] = nil
      i = i + 1
   until #t == 0
   return newt
end

table.shuffle = function(t)
   local newt = ReturnRandomTable(t)
   for i = #t,1,-1 do
      t[i] = nil
   end
   return newt
end

local randt = table.shuffle(tab)
for _,v in pairs(randt) do
   print(v)
end

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

通过将t[rand] = nil更改为table.remove(t,rand)来解决。