python random.shuffle's randomness
Following is from python website, about
random.shuffle(x[, random])
Shuffle the sequence
x
in place. The optional argument random is a 0-argument function returning a random float in[0.0, 1.0)
; by default, this is the functionrandom()
.Note that f开发者_运维知识库or even rather small
len(x)
, the total number of permutations ofx
is larger than the period of most random number generators; this implies that most permutations of a long sequence can never be generated.
If I want to repeat getting a random permutation of ['a'..'k']
, it seems shuffle will NOT give me the randomness. Is my understanding right?
Thank you!
You don't have anything to worry about. While under len(x)
is under 2000, random.shuffle
should work just fine.
For a sequence of length 11, there are 11! or 39,916,800 (~ 225.3) possible permutations. For the Mersienne Twister (Python's random algorithm) the period is 219937 − 1. In other words, you'll be fine.
精彩评论