How To Shuffle A Table in Lua
Hello and welcome to another tutorial about the programming language Lua!
In game programming, you will need to randomize which objects, decisions, or choices are presented to a player. These examples are heavily used in gaming, but can be used in any type of application. If you are using Lua, there’s not a built-in way to shuffle a table. To fix this, I’ve create a simple function that you can use within your game to shuffle the elements in a table.
To use this function, you’ll need to pass in a table variable to the function shuffle() . The shuffle() function will return the table with the elements in a random order. You can then use the newly shuffled table in your application! Here’s what the code looks likes:
local function shuffle(t)
local n = #t -- gets the length of the table
while n > 2 do -- only run if the table has more than 1 element
local k = math.random(n) -- get a random number
t[n], t[k] = t[k], t[n]
n = n - 1
end
return t
end
local m = {1,2,3,4,5} -- create a table
m = shuffle(m) -- shuffle a table and save it as m
The last two lines in the code above is an example of how to use this function. I’ve created a table titled m and gave it the numbers 1 through 5. Then, I passed in the table to the function shuffle() to shuffle the table. Since this function returns the table, I assigned shuffle(m) to m so I can store the contents of my shuffled table.
Although Lua is used in a lot of places, I mainly use it with Corona SDK. If you’d like to start building a game with Corona, check out Corona Starfighter . Thanks for reading and if you have questions or additions to this simple function, let me know in the comments below!