Generating different random values

Is it possible to generate multiple random numbers, but so that no number occurs more that once. For instance, with this:

local alphabet = {"a","b","c","d","e","f","g","h"}  
  
print(alphabet[math.random(1,#alphabet)])  
print(alphabet[math.random(1,#alphabet)])  
print(alphabet[math.random(1,#alphabet)])  

would it be possible to make sure that no letter was ever printed more than once? [import]uid: 116264 topic_id: 26012 reply_id: 326012[/import]

Sure, there are several ways to do this, Here is one i came up with to answer your question. You can run it in the simulator to test (it never picks the same letter)

[code]
math.randomseed(os.time())

local alphabet = {
{letter = “a”, picked = false},
{letter = “b”, picked = false},
{letter = “c”, picked = false},
{letter = “d”, picked = false},
{letter = “e”, picked = false},
{letter = “f”, picked = false},
{letter = “g”, picked = false},
{letter = “h”, picked = false},
}

local rand = math.random(1, #alphabet)
local amountPicked = 0

–Loop over until we have picked at least 3 letters
repeat
rand = math.random(1, #alphabet)
if alphabet[rand].picked == false then
print(alphabet[rand].letter)
amountPicked = amountPicked + 1
alphabet[rand].picked = true
end
until
amountPicked == 3
[/code] [import]uid: 84637 topic_id: 26012 reply_id: 105900[/import]

Thanks, just what I was looking for :slight_smile: [import]uid: 116264 topic_id: 26012 reply_id: 106342[/import]