概率论学不好不会用排列组合来算那就只能依靠大数定律了...
先上结论,先手25.8%,后手31.9%
import random
cards = list(range(30))
N = 1000000
count0 = 0
for i in range(N):
random.shuffle(cards)
hands = cards[:3]
if 0 in hands:
#原手就有二王子
count0 += 1
else:
random.shuffle(cards)
hands = cards[:4]
if 0 in hands:
#起手换牌, 第一回合摸牌, 有二王子
count0 += 1
elif 1 in hands or 2 in hands:
#有把书给我, 第一回合使用之
if cards[4] == 0:
#摸到二王子
count0 += 1
elif cards[5] == 0:
#没摸到但是第二回合摸牌摸到二王子
count0 += 1
elif cards[4] == 0:
#没有把书给我, 第二回合摸到二王子
count0 += 1
else:
pass
print("%d次先手2费能上二王子: %.3f"%(N, count0/N))
count1 = 0
count2 = 0
for i in range(N):
random.shuffle(cards)
hands = cards[:4]
if 0 in hands:
#原手就有二王子
count1 += 1
else:
random.shuffle(cards)
hands = cards[:5]
if 0 in hands:
#起手换牌, 第一回合摸牌, 有二王子
count1 += 1
elif 1 in hands and 2 in hands:
#有两个把书给我
if cards[5] == 0:
#使用第一个, 摸到二王子
count2 += 1
elif cards[6] == 0:
#使用第二个, 摸到二王子
count2 += 1
elif cards[7] == 0:
#都没摸到, 但是第二回合摸牌摸到
count2 += 1
elif 1 in hands and 2 not in hands:
#有一个把书给我
if cards[5] == 0:
#使用之, 摸到二王子
count2 += 1
elif cards[5] == 2:
#使用之, 摸到另外一个把书给我:
if cards[6] == 0:
#使用第二个, 摸到二王子
count2 += 1
elif cards[7] == 0:
#都没摸到, 但是第二回合摸牌摸到
count2 += 1
elif cards[6] == 0:
#使用之, 没有把书给我, 但是第二回合摸牌摸到
count2 += 1
elif 2 in hands and 1 not in hands:
#有一个把书给我
if cards[5] == 0:
#使用之, 摸到二王子
count2 += 1
elif cards[5] == 1:
#使用之, 摸到另外一个把书给我:
if cards[6] == 0:
#使用第二个, 摸到二王子
count2 += 1
elif cards[7] == 0:
#都没摸到, 但是第二回合摸牌摸到
count2 += 1
elif cards[6] == 0:
#使用之, 没有把书给我, 但是第二回合摸牌摸到
count2 += 1
elif cards[5] == 0:
#没有把书给我, 第二回合摸到二王子
count2 += 1
elif cards[5] == 1 or cards[5] == 2:
#第二回合摸到把书给我, 使用之
if cards[6] == 0:
#摸到二王子
count2 += 1
else:
pass
print("%d次后手1费跳二王子:%.3f, 2费能上二王子: %.3f, 总计: %.3f"%(N, count1/N, count2/N, (count1 + count2)/N))
结果
image.png