[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!