扑克洗牌算法

游戏项目中扑克牌洗牌算法

card_list = []
for i in range(1, 55):
	card_list.append(i)
	
card_list = copy.deepcopy(card_list)		# 为保证原数据不被改变,对原列表进行深拷贝一份

for i in range(1, 54):
	index = random.randint(i, 54)
	card_list[i-1], card_list[index] = card_list[index], card_list[i-1]

实现方式如下:
第一次随机到 10 – > [10, 2, 3, …, 9, 1, 11, …, 54]
第二次随机到 21 --> [10, 21, 3, …, 9, 1, 11, …20, 2, 22, …,54]
······

依次类推,完成洗牌

注:经测试,一般洗7次得到的牌效果是最好。
除了以上的方法还有另一种,因为效率较低,所以不推荐使用

result = []
for i in range(54):
    index = random.randint(i, 54)
    result.append(card_list[index])
    card_list.pop(index)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值