@michael : you see , apparantly , the results will look like they are giving random numbers , but lets go through a simple case:
suppose you have 3 cards from a deck , so number of diff permutations will be 3! = 6 , lets see this in a bit detail :
'__________' '_________' '_________'
the above are 3 slots, where you can put the cards.
for the 1st slot , you have 3 options.
for the 2st slot , you have 2 options left.
for the 3st slot , you have 1 option left.
thus 3*2*1 = 6
total number of ways you can arrange the cards.
if you want to do this in code , you will have to reduce the population from where your taking the cards by 1 in every turn , thus resulting in 2 options down from 3 , and then 1 option down from 2 in the 2nd and 3rd runs.
if you dont do this , and take a random number from the whole population , ie 3 on each turn, you would get 3*3*3 = 27
combinations , which isnt correct, and will give you biased results. You can check that with the naked eye as well as the result obtained here(27) isnt divisible by 6 ( the correct result ) . So some arrangements will turn up a greater number of times than others.
i had posted a link on one of my earlier replies... there you will find a more detailed explanation of what i said above along with charts and diagrams. i found that a very good read.