2010-07-01 88 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.換句話說,你會沒事的。