Python中random.shuffle的随机性

6
以下是来自Python网站的内容,关于:
随机洗牌函数random.shuffle(x[, random])
对序列x进行原地洗牌。可选参数random是一个0个参数的函数,返回一个在[0.0, 1.0)范围内的随机浮点数;默认情况下,这是函数random()。
请注意,即使对于相当小的len(x),x的排列总数也比大多数随机数生成器的周期要大;这意味着长序列的大多数排列都无法生成。
如果我想重复获取['a'..'k']的随机排列,似乎shuffle函数不会给我随机性。我的理解正确吗?
谢谢!

2
可能是使用Python random.shuffle洗牌的列表的最大长度?的重复问题。 - ire_and_curses
谢谢Chris和SilentGhost的快速详细解释! - Bill Rong
2个回答

6

你不必担心。 只要列表长度小于2000,random.shuffle 就可以正常工作。


6

对于长度为11的序列,有11!或39,916,800(约为2的25.3次方)种可能的排列方式。对于梅森旋转算法(Python中的随机算法),其周期为2的19937次方减1。换句话说,你不用担心。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接