I'd rather just call some randomize function on a list than have to create the function myself.
Unfortunately, Lua does not have any built-in implementation of shuffle algorithms.
However, there are some easy ones that you can implement or find.
The Fisher-Yates shuffle algorithm is an efficient, reliable, and easy-to-implement algorithm for array randomization.
Here is my optimized implementation of Fisher-Yates in Lua. Feel free to use it as you wish. All you have to do is put the function somewhere and call it on a table in array form that you want to shuffle.
function shuffle(array) -- fisher-yates local output = { } local random = math.random for index = 1, #array do local offset = index - 1 local value = array[index] local randomIndex = offset*random() local flooredIndex = randomIndex - randomIndex%1 if flooredIndex == offset then output[#output + 1] = value else output[#output + 1] = output[flooredIndex + 1] output[flooredIndex + 1] = value end end return output end math.randomseed(tick()) -- be sure to set randomseed somewhere for better randomness
There is no built-in function for randomizing a table. However, after a bit of research, I came across a script stickmasterluke posted.
The script essentially takes the values of a table, puts them in a new table in a random order using math.random and returns the new table once it's done. It even has example usage so you can figure out how it works.
You can take the script from here.