如何在 Python 中随机化一个列表

将列表按随机顺序排列似乎是一项不寻常的任务,但它对许多企业来说非常有用。例如,您可能想将销售线索随机分配给销售人员,为员工分配工作或为客户进行抽奖。无论出于何种原因,您都可以使用流行的编程语言 Python 来随机化元素列表的顺序。

如果您出于敏感目的生成随机列表或随机数,例如赌钱或加密目的的抽奖,您需要确保使用高质量的随机数生成器。

用Python随机播放列表

您可以使用Python在仅几行代码中构建列表随机化工具。 Python 可免费用于商业和个人用途,可用于所有现代操作系统,包括 Microsoft Windows、macOS、Linux 和其他 Unix 风格的系统。

广泛使用的两种编程语言版本Python 2和Python 3包含一个名为 洗牌 可以随机化列表或其他数据序列。要使用随机播放,请通过添加以下行来导入Python random package 随机导入 在程序顶部附近。

然后,如果您有一个名为的列表 X,你可以打电话 random.shuffle(x) 让随机 shuffle 函数以随机方式重新排序列表。

请注意,随机播放功能将替换现有列表。如果您想按原始顺序保留列表的副本,请在洗牌之前制作列表的副本。您可以导入Python复制程序包并使用其 复制 这样做的方法。用 y = copy.copy(x) 创建列表的副本 X 并分配变量 ÿ 参考它。注意,如果你写 y = x, 多变的 ÿ 被分配为指向与以下列表相同的列表 X 会,并且不会创建新副本。

抓取一个随机元素

如果您只想从Python的列表中获取随机元素,则也可以使用random包来做到这一点。通过包含以下内容导入随机包 随机导入 在代码顶部附近。

要选择单个元素,请使用 随机选择(x), 在哪里 X 是您列表的名称。该函数从列表中返回一个随机选择的元素 X。请注意,如果您调用 随机选择 多次,您可能会多次获得列表中的同一元素,除非您在两次调用之间将其从列表中删除。

如果要两次抓取一组不包含相同元素的多个元素,请使用 random.sample(x,k), 在哪里 X 是列表, 是您想要的元素数。如果列表中包含重复的元素,则它们可能会在随机样本中重复出现。

随机数生成器的风险

并非所有随机数生成器都是相同的。 Python文档警告说,Python的内置随机数生成器不适合用于加密目的,在这种情况下,创建随机数生成器以最少的第三方解密风险来加密数据就需要最低程度的实际随机性。如果对于列表来说,列表是真正随机且不可预测的(例如抽奖活动)对您的业务很重要,那么使用正确的随机数生成器就很重要。

Python random 模块的一些子类提供更高级别的随机性。在现代操作系统上,您可以要求操作系统提供可用于加密的高质量随机数据。通过Python,您可以使用函数访问此随机数据 os.urandom 在 os 模块中,或者您可以调用 random.SystemRandom 使用操作系统随机数据生成与随机模块等效的随机数生成器。

要将其与随机播放一起使用,请键入 r = random.SystemRandom() 生成随机数生成器,然后调用 r.shuffle(x) 在您的清单上 X。其他功能,包括 选择样本,也可以与SystemRandom生成器一起使用。

检查您的操作系统的文档以了解其随机数生成器的工作原理以及它是否适合您的需要。在某些情况下,您可能可以将操作系统配置为使用外部硬件设备来生成随机数。