You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现从同一列表为两个变量生成不重复值(卡牌发牌场景)

卡牌发牌重复问题解决方法

你的代码问题在于两次调用random.sample(cards, 2)都是从完整的原始卡牌列表里抽取,两次操作完全独立,所以会出现同一张牌被两个玩家拿到的情况。下面给你两种可行的解决思路:

方法一:先发玩家1的牌,再从剩余牌里发玩家2

先给玩家1抽取2张牌,然后从原列表中过滤掉已经发给玩家1的牌,再从剩余牌里给玩家2抽牌:

import random

cards = ["a", "b", "c", "d", "e", "f", "g"]

player_1 = random.sample(cards, 2)
# 筛选出未发给玩家1的剩余卡牌
remaining_cards = [card for card in cards if card not in player_1]
player_2 = random.sample(remaining_cards, 2)

print(player_1)
print(player_2)

方法二:一次性抽取足够的牌再拆分

更高效的方式是直接从卡牌列表里一次性抽取4张不重复的牌,前2张给玩家1,后2张给玩家2:

import random

cards = ["a", "b", "c", "d", "e", "f", "g"]

# 一次性抽4张不重复的牌
dealt_cards = random.sample(cards, 4)
player_1 = dealt_cards[:2]
player_2 = dealt_cards[2:]

print(player_1)
print(player_2)

这两种方法都能保证两个玩家拿到的卡牌完全不重复,你可以根据自己的需求选择。

内容的提问来源于stack exchange,提问作者rhsy19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:05:53