Anonymous (nobody@replay.com)
Thu, 29 Oct 1998 17:33:29 +0100
A couple responders have said there is no SWAP_TIMES
which would work. But I don't understand why the
following wouldn't work:
First of all, make sure that x and y can't be equal, since
there's no point in swapping an element with itself. This
should add a negligible amount of time.
        x=getrand();
        do
                y=getrand();
        while (x == y);
Now, simply calculate how many SWAP_TIMES it would take for it
to be equally as likely that an element would not be touched as
it would to land in its original spot.
(255/256)^(t*2) = 1/256
or
t = ln(1/256)/(2*ln(255/256))
or
708.3955
Another anonymous wrote:
In the following snippet of pseudo-code, what should the value of               
SWAP_TIMES be to make the array A[] random, assuming                            
that getrand() returned a truly random integer between                          
0 and 255                                                                       
                                                                                
A[256];                                                                         
                                                                                
for(i=0;i<SWAP_TIMES;i++){                                                      
        x=getrand();                                                            
        y=getrand();                                                            
        swap(A[x],A[y]);                                                        
}                                                                               
                                                                                
Thanks
The following archive was created by hippie-mail 7.98617-22 on Sat Apr 10 1999 - 01:15:23