Alex Alten (Alten@home.com)
Wed, 28 Oct 1998 22:10:08 -0800
At 04:13 PM 10/28/98 -0800, Jim Gillogly wrote:
>Anonymous asks:
>> In the following snippet of pseudo-code, what should the value of
>> SWAP_TIMES be to make the array A[] random, assuming ...
>> 
>> for(i=0;i<SWAP_TIMES;i++){
>> 	x=getrand();
>>	y=getrand();
>>	swap(A[x],A[y]);
>> }
>
>Indeterminate -- it could be a long time before you pick every number to
>swap with something.  Instead use Knuth's "Algorithm P" from Seminumerical
>Algorithms (Vol. 2 of The Art of Computer Programming), which is linear
>in the length of the table and uses only one random number per swap.
>
The concept of swapping to get a random string of bits is very interesting.
>From what I understand when one shuffles a deck of 52 cards 7 or more times
the card order becomes unpredictable e.g. random.  The shuffle must be
what is called a "near perfect" shuffle.  In other words the cards can't
strictly alternate from each hand (with a half deck each), but must be 
slightly random, in the sense that sometimes 2 or 3 cards may drop from a
hand before a card drops from the other hand.  An amateur shuffle, like
the one I perform, where the cards clump as they drop, may require 100's 
of iterations before the order becomes totally unpredictable.  BTW, if
I remember correctly the number of people in the world who can execute a 
perfect shuffle at a professional rate (about 8 times a minute?) 
consistently is somewhat less than 30.
- Alex
--Alex Alten
Alten@Home.Com Alten@TriStrata.Com
P.O. Box 11406 Pleasanton, CA 94588 USA (925) 417-0159
The following archive was created by hippie-mail 7.98617-22 on Sat Apr 10 1999 - 01:15:22