On Mon, Apr 13, 2009 at 8:46 PM, Uli Kusterer
<witness.of.teacht...@gmx.net> wrote:
> On 14.04.2009, at 02:36, Michael Ash wrote:
>>
>> Note that writing a
>> proper shuffling algorithm is harder than it sounds. More properly,
>> it's easy, but figuring out whether you got the correct one or one of
>> the zillions of ones that look correct but aren't is difficult.
>
>  Curious which ones look correct but aren't. Have any examples or a link to
> an article?

The most obvious one is this:

for i in 0, length(array):
    swap(array[i], array[random(length(array))])

It's probably the first thing you think of when you think "shuffle an
array", but it will produce biased results.

This can be seen if you look at the number of permutations. For
example, a 3-element array has 6 possible orderings. This algorithm
has 27 possible run sequences on a 3-element array (3**3). Since 27 is
not evenly divisible by 6, it's clear that some orderings will appear
more frequently than others.

Wikipedia has a decent discussion of both the proper way and why the
improper ways are improper here:

http://en.wikipedia.org/wiki/Shuffle#Shuffling_algorithms

Mike
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to