栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Python random.shuffle随机播放的列表的最大长度?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python random.shuffle随机播放的列表的最大长度?

TL; DR:它在包含2080多个元素的列表上“断开”,但是不必太担心:)

完整答案:

首先,请注意,“改组”列表可以(在概念上)理解为生成列表元素的所有可能排列,并随机选择这些排列之一。

然后,您必须记住,所有独立的计算机化随机数生成器实际上都是“伪”随机数。也就是说,它们实际上并不是随机的,而是依靠一系列因素来尝试生成难以被高级或有目的地复制的数字。这些因素中通常是先前生成的数字。因此,在实践中,如果连续使用一定次数的随机数生成器,最终将再次从头开始获得相同的序列(这是文档所指的“期间”)。

最后,Lib / random.py(随机模块)上的文档字符串说:“(随机数生成器)的周期是

2**19937-1
。”

因此,考虑到所有这些,如果您的列表中存在

2**19937
多个或更多的排列,那么其中一些将永远无法通过对列表进行混排获得。您(再次,从概念上来说)将生成列表的所有排列,然后生成一个随机数x,然后选择第x个排列。下次,您将生成另一个随机数y,并选择yth排列。等等。但是,由于排列的数量多于获得随机数的数量(因为最多在
2**19937-1
生成数字之后,您将再次开始获得相同的数量),因此您将再次开始选择相同的排列。

因此,您看到,列表的长度不完全是问题(尽管确实会进入等式)。另外,

2**19937-1
是相当长的数字。但是,根据您的洗牌需求,您应该牢记所有这些。在简单的情况下(并具有快速的计算功能),对于没有重复元素的列表,2081个元素将产生
2081!
置换,大于
2**19937



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650676.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号