【lua】洗牌算法(极简)

洗牌算法代码

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,

猜你喜欢

转载自blog.csdn.net/weixin_41093846/article/details/130338754