This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author dbenbenn
Recipients dbenbenn, docs@python
Date 2013-09-05.00:18:30
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
Since Python 2.1 [1], when random.shuffle was added, the documentation has said:

"""Note that for even rather small len(x), the total number of permutations of x is larger than the period of most random number generators; this implies that most permutations of a long sequence can never be generated."""

This comment is incorrect and misleading.  In fact, I claim that shuffle can produce "all" permutations for any representable sequence.

To shuffle a sequence of length N requires log(N!) ~ N * log(N/e) bits of randomness [2].  The random module provides a generator with "a period of 2**19937-1", meaning you can get 2**19937 bits of randomness out of it before it starts repeating.

All of which is to say that any representable sequence, say N < 2**50, will need no more than 2**60 bits of randomness to shuffle.  That is well within the period of the random number generator.

Attached is a patch that deletes the comment.

An illustration of this misconception is at [3].

Date User Action Args
2013-09-05 00:18:34dbenbennsetrecipients: + dbenbenn, docs@python
2013-09-05 00:18:34dbenbennsetmessageid: <>
2013-09-05 00:18:33dbenbennlinkissue18928 messages
2013-09-05 00:18:32dbenbenncreate