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的列表.
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |