random.shuffle?
Tim Peters
tim_one at email.msn.com
Mon Jul 31 15:13:22 EDT 2000
More information about the Python-list mailing list
Mon Jul 31 15:13:22 EDT 2000
- Previous message (by thread): random.shuffle?
- Next message (by thread): random.shuffle?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Erik Max Francis] > ... > Better would be this: > > def shuffle(list): > count = len(list) > for i in range(count): > j = whrandom.randint(count) > list[i], list[j] = list[j], list[i] > > Simpler, too. Actually, random.shuffle was added to Python to stop that bad algorithm from propagating! *That's* the biased one. The easiest way to see that it must be biased is that there are count**count possible outcomes (you pick one of count values for j on each of count iterations), and count! does not divide count**count for count > 2: some permutations are thus necessarily more likely than others, provided the list has at least 3 elements. Note that there are count! possible outcomes in François's paraphrase of the std Python random.shuffle. That doesn't mean it's unbiased, but does mean that it's at worst not so *obviously* biased <wink>. Exhaustive discussion can be found via DejaNews.
- Previous message (by thread): random.shuffle?
- Next message (by thread): random.shuffle?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list