Description
打乱指定table中的元素!
Implemention
-- 设置随机数种子
math.randomseed(tonumber(tostring(os.time()):reverse():sub(1,6)))
-- 洗牌算法
function shuffle(targetTbl)
local tblLen = #targetTbl
while(tblLen > 0)
do
local idx = math.random(tblLen)
targetTbl[tblLen], targetTbl[idx] = targetTbl[idx], targetTbl[tblLen]
tblLen = tblLen - 1
end
return targetTbl
end
-- test
local testTbl = {1, 2, 3, 4, 5, 6, 7, 8, 9}
local retTbl = shuffle(testTbl)
for k, v in pairs(retTbl) do
print(k, v)
end
--[[
1 4
2 6
3 2
4 1
5 9
6 8
7 5
8 3
9 7
]]
ps:
Lua代码在线测试网站:Execute Lua Online