Use Knuth Shuffle algo.

On Sun, Aug 15, 2010 at 8:34 PM, Rahul Singhal <nitk.ra...@gmail.com> wrote:

> Let X1, X2…. XN (In this case N=52) be the set of N numbers to be shuffled.
>
>    1. Set j to N
>    2. Generate a random number R. (uniformly distributed between 0 and 1)
>    3. Set k to (jR+1). k is now a random integer, between 1 and j.
>    4. Exchange Xk and Xj
>    5. Decrease j by 1.
>    6. If j > 1, return to step 2.
>
>  void Shuffle(int* pArr)
> {
>     int rand;
>     for(int i=51;i>=0;i--)
>     {
>         rand=GenRand(0,i);
>         swap(pArr[i], pArr[rand]);
>     }
> }
>
> GenRand(int min, int max) generates a random number between min and max.
>
>
> On Sun, Aug 15, 2010 at 9:10 AM, Dave <dave_and_da...@juno.com> wrote:
>
>> @Sharad: Your code does not produce equally probable shuffles. You can
>> see this by noting that a[0] is swapped with one of 52 cards, same for
>> a[1], a[2], ..., a[51]. Thus, there are 52^52 possible sets of swaps.
>> But there are only 52! possible outcomes, and 52^52 / 52! is not an
>> integer.
>>
>> You can verify this experimentally by shuffling a small deck, say 3
>> cards. If you do so, you will find that, starting with the deck ABC,
>> you get ABC 4/27 of the time, ACB 5/27, BAC 5/27, BCA 5/27, CAB 4/27,
>> and CBA 4/27. Thus, some outcomes are 25% more likely than others.
>>
>> The proper code is
>> for(i=1;i<52;++i)
>> {
>> int r=rand()%(i+1);
>> swap(a[i],a[r]);
>> }
>>
>> Dave
>>
>> On Aug 14, 9:34 pm, sharad kumar <aryansmit3...@gmail.com> wrote:
>> > for(i=0;i<52;++i)
>> > {
>> > int r=rand()%52;
>> > swap(a[i],a[r]);
>> >
>> > }
>> > On Sat, Aug 14, 2010 at 11:46 PM, amit <amitjaspal...@gmail.com> wrote:
>> > > write a program to shuffle an pack of cards in the most efficient way.
>> >
>> > > --
>> > > You received this message because you are subscribed to the Google
>> Groups
>> > > "Algorithm Geeks" group.
>> > > To post to this group, send email to algoge...@googlegroups.com.
>> > > To unsubscribe from this group, send email to
>> > > algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>> <algogeeks%2bunsubscr...@googlegroups­.com>
>> > > .
>> > > For more options, visit this group at
>> > >http://groups.google.com/group/algogeeks?hl=en.
>> >
>> > --
>> > yezhu malai vaasa venkataramana Govinda Govinda
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algoge...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>>
>
>
> --
> Rahul singhal
> RnD Engineer
> Tejas Networks
> Mobile- 09916969422
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algoge...@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

Please access the attached hyperlink for an important electronic communications 
disclaimer: http://dce.edu/web/Sections/Standalone/Email_Disclaimer.php

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to