商城首页欢迎来到中国正版软件门户

您的位置:首页 >Python实现简单洗牌算法方法

Python实现简单洗牌算法方法

  发布于2026-03-11 阅读(0)

扫一扫,手机访问

答案:Python中常用random.shuffle()实现洗牌,基于Fisher-Yates算法,直接修改列表顺序;也可手动实现该算法或复制列表后洗牌以保留原数据。

python中如何实现简单的洗牌算法

在Python中实现简单的洗牌算法,最常用的方法是使用 random.shuffle() 函数,它可以直接打乱列表元素的顺序。这是基于 Fisher-Yates 洗牌算法 实现的,效率高且随机性良好。

1. 使用 random.shuffle() 打乱列表

这是最简单、推荐的方式,适用于大多数场景:

import random

原始牌组(例如:一副扑克牌的编号)

cards = list(range(1, 53)) # 表示52张牌

就地打乱顺序

random.shuffle(cards)

print(cards) # 输出打乱后的牌

说明: random.shuffle() 直接修改原列表,不会返回新列表。

2. 手动实现 Fisher-Yates 洗牌算法

如果你想理解原理或避免依赖 random.shuffle(),可以手动实现:

import random

def fisher_yates_shuffle(arr): n = len(arr) for i in range(n - 1, 0, -1): j = random.randint(0, i) # 在 [0, i] 范围内随机选一个索引 arr[i], arr[j] = arr[j], arr[i] # 交换元素 return arr

示例使用

cards = list(range(1, 53)) fisher_yates_shuffle(cards) print(cards)

关键点: 从后往前遍历,每个位置 i 随机选择一个不超过 i 的位置 j,然后交换。

3. 返回新的打乱列表(不修改原列表)

如果不想改变原始数据,可以先复制再洗牌:

import random

original = ['A', 'B', 'C', 'D', 'E'] shuffled = original.copy() # 复制列表 random.shuffle(shuffled)

print("原列表:", original) print("打乱后:", shuffled)

基本上就这些。日常使用推荐 random.shuffle(),简洁高效。需要自定义逻辑时,用 Fisher-Yates 手动实现也很清晰。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注