It looks like you're new here. If you want to get involved, click one of these buttons!

I want to generate 10 number out of a table but a number may only be selected one's.

Tried this

```
function randomNumber()
z={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
z2={}
for i=1,10 do
z2[i]=math.random(1,#z)
for k,v in pairs(z2) do
if z2[i]==v then break end
end
end
table.insert(z2,z2[i])
for k,v in pairs(z2) do print(k,v) end
end
```

## Comments

Do a forum search for random numbers. The code has already been written for this.

You aren't really after random numbers, you are wanting to randomly shuffle your table.

http://en.wikipedia.org/wiki/Fisher-Yates_shuffle

To shuffle an array a of n elements (indices 0..n-1):

for i from n − 1 downto 1 do

j ← random integer with 0 ≤ j ≤ i

exchange a[j] and a[i]

Don't have time to lua that up, but it should be pretty simple

Edit: read it again, and I'm not quite right, but you could do the above shuffle and then just take the first 10.

Maybe TLL should add a table.randomize(table) function.

The Fisher-Yates-Knuth algorithm has already been coded here on the forums. Here's one example: http://codea.io/talk/discussion/3079/like-a-turned-card/p1

Ah, thank you @LoopSpace

I need 10 random numbers from 1 to 20 but the numbers may not repeat

ex. 5,12,10,6,9,11,12,18,20,4

I don't see how this can help me, this only gives me the numbers in random order.

Try this.

the reason that sorting works is that it gives you a list of numbers in random order.

If you want ten random numbers, then you just take the first ten numbers from the list, ie n[1], n[2],..n[10] where n is the list.

This is very efficient, and the code is worth keeping for use in other projects.

Yes, thanks i got it. both Work fine. Thanks for the help.