这在random.shuffle的文档中意味着什么?

Ane*_*pic 6 python random

http://docs.python.org/2/library/random.html#random.shuffle

random.shuffle(x[, random])

将序列x随机移动到位.可选参数random是一个0参数函数,在[0.0,1.0)中返回随机浮点数; 默认情况下,这是函数random().

注意,即使相当小len(x),x的排列总数也大于大多数随机数生成器的周期; 这意味着永远不会产生长序列的大多数排列.

有人可以向我解释最后一句话的含义吗?

听起来你可以或应该使用的列表大小是否有限制shuffle

Mar*_*ers 10

这意味着对于较长的列表,随机数生成器将开始重复自身,因此给定列表的不同可能"随机播放"的数量不会是列表的排列数.

对于长度为N的列表,有N!(N阶乘)可能的方式来置换列表顺序,但如果随机生成器在少于N后开始重复自身!迭代,那么random.shuffle()函数将无法生成所有N!该列表的排列.

它仍然可以随机播放列表,但即使你无限次地对列表进行洗牌,它也不会为这样的列表产生所有可能的排序.

默认random.random()函数使用Mersenne Twister算法,其周期为2**19937-1.这意味着在您看到此行为发生之前,您需要一个长度为2081的列表.