[vox-tech] shuffling arrays in C?
Bill Kendrick
vox-tech@lists.lugod.org
Mon, 25 Nov 2002 16:32:56 -0800
On Mon, Nov 25, 2002 at 03:56:58PM -0800, Alexandra Thorn wrote:
> > const int selection_size = ELEMS_IN_ARY(your_array) - (i + 1);
> > int selected_card = (i + 1) /* don't include the already selected
> > cards, or the card to swap with */
> > + (int)((selection_size*1.0*rand())/(RAND_MAX+1.0)) /* see
> > rand(3) */
>
> Micah, could you explain how/why this would work? It doesn't seem
> intuitively obvious, and I prefer not to use code that I don't understand.
Say you're on the 3rd card. What he's doing is making sure
he doesn't pick card 1, 2 or 3 (i.e., itself) as the card to swap with.
-bill!