可以看成是全排列的问题,最简单的方法 : local N = 100 local array = {} for i = 1 , N do array[i] = i end for i = 1 , N do local j = math.random(N - i + 1) + i - 1; array[i],array[j] = array[j],array[i] end for i = 1 , N do print(array[i]) end 可以分析出这个程序可以产生N!种排列,所以应该算得上是随机的
math.randomseed(os.time()) local t ={} local n = 50 for i= 1,100 do table.insert(t,i) end for i = 1,n do local nNum = math.random(1,#t) print(t[nNum]) table.remove(t,nNum) end