local tile = {"C", "O", "L", "I", "N", "F", "A", "R", "R", "E", "L", "L"}
table.sort(tile, function(a,b) return ( math.random(1,2) <2) end)
print ( 'table: '..table.concat( tile, ', '))
我正在随机化表格的顺序,这似乎工作正常,但每次第二次运行程序时我都会收到此错误:invalid order function for sorting
。有关正在发生的事情的任何建议吗?
我找到了解决方法。 http://developer.coronalabs.com/code/shufflerandomize-tables 这将使表格中的内容混乱,而不会出现上述方法的任何问题。
答案 0 :(得分:4)
如果要重新排列数组,请查看my shuffle snippet。
主要思想是您创建一个包含随机数的项目表,在保留原始索引的同时对其进行排序,并根据新订单对项目重新排序。
function shuffled(tab)
local n, order, res = #tab, {}, {}
for i=1,n do order[i] = { rnd = math.random(), idx = i } end
table.sort(order, function(a,b) return a.rnd < b.rnd end)
for i=1,n do res[i] = tab[order[i].idx] end
return res
end
答案 1 :(得分:1)
赋予table.sort
的排序函数在某种意义上被认为是确定性的,因为它始终为同一对参数返回相同的结果,并且在a<b
和{{的意义上是一致的1}}隐含b<c
。