Choose a random item from a table

Zen picture Zen · Jun 7, 2010 · Viewed 41.9k times · Source

My goal is to pick out a random item from a table in Lua.

This is what I've got so far, but it currently does not work:

local myTable = { 'a', 'b', 'c', 'd' }
print( myTable[ math.random( 0, #myTable - 1 ) ] )

How can I fix the above code so that it works as intended? (Or which other method could I use?)

Answer

Michal Kottman picture Michal Kottman · Jun 7, 2010

Lua indexes tables from 1, unlike C, Java etc. which indexes arrays from 0. That means, that in your table, the valid indexes are: 1, 2, 3, 4. What you are looking for is the following:

print( myTable[ math.random( #myTable ) ] )

When called with one argument, math.random(n) returns a random integer from 1 to n including.