洗牌算法代码
function randShuffle(tab)
for i = #tab, 1, -1 do
local index = math.random(1, i)
tab[i], tab[index] = tab[index], tab[i]
end
return tab
end
测试代码
function randShuffle(tab)
for i = #tab, 1, -1 do
local index = math.random(1, i)
tab[i], tab[index] = tab[index], tab[i]
end
return tab
end
function printtab(tab)
local retstring = ""
for i = 1, #tab do
retstring = retstring .. tab[i] .. ","
end
return retstring
end
math.randomseed(os.time())
local tab = {
}
for i = 1, 54 do
table.insert(tab, i)
end
print("before shuffle\t" .. printtab(tab))
tab = randShuffle(tab)
print("after shuffle\t" .. printtab(tab))
测试结果
before shuffle 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,
after shuffle 34,19,14,48,38,3,26,1,7,22,32,15,33,2,24,9,21,18,54,11,41,23,13,36,29,6,25,27,40,44,17,43,16,4,39,35,28,47,12,42,8,53,10,5,30,37,52,45,31,51,50,46,49,20,