简体   繁体   中英

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 function random() .

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.

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 (~ 2 25.3 ) possible permutations. For the Mersienne Twister (Python's random algorithm) the period is 2 19937 − 1. In other words, you'll be fine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM