2010-07-01 60 views
6

以下是从蟒蛇的网站,约蟒蛇random.shuffle的随机性

random.shuffle(x[, random])

到位洗牌序列x。可选参数random是一个0参数函数,返回[0.0, 1.0)中的一个随机float;默认情况下,这是功能random()

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

如果我想重复获得['a'..'k']的随机排列,似乎洗牌不会给我随机性。我的理解是正确的吗?

谢谢!

+2

可能重复的[与Python random.shuffle随机清单的最大长度?](http://stackoverflow.com/questions/3062741/maximal-length-of-list-to-shuffle-with-python-random -shuffle) – 2010-07-01 17:43:41

+0

感谢Chris和SilentGhost的快速和详细的解释! – 2010-07-01 17:56:25

回答

6

对于长度为11的序列,有11个!或39,916,800(〜2 25.3)可能的排列。对于Mersienne Twister(Python的随机算法),周期为2 - 1.换句话说,你会没事的。