parent
7c69c55295
commit
5fe0d35781
@ -0,0 +1,53 @@
|
||||
import itertools
|
||||
import random
|
||||
|
||||
# 创建牌组
|
||||
suits = ['黑桃', '红桃', '梅花', '方块']
|
||||
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
|
||||
deck = list(itertools.product(suits, ranks))
|
||||
|
||||
# 定义检测牌型的函数
|
||||
def check(hand):
|
||||
# 检测豹子
|
||||
if hand[0][1] == hand[1][1] == hand[2][1]:
|
||||
return '豹子'
|
||||
# 检测顺金
|
||||
sorted_hand = sorted(hand, key=lambda x: ranks.index(x[1]))
|
||||
if all(sorted_hand[i][0] == sorted_hand[0][0] for i in range(3)):
|
||||
if ranks.index(sorted_hand[2][1]) - ranks.index(sorted_hand[0][1]) == 2:
|
||||
return '顺金'
|
||||
# 检测金花
|
||||
if all(hand[i][0] == hand[0][0] for i in range(3)):
|
||||
return '金花'
|
||||
# 检测顺子
|
||||
if ranks.index(sorted_hand[2][1]) - ranks.index(sorted_hand[0][1]) == 2:
|
||||
return '顺子'
|
||||
# 检测对子
|
||||
if hand[0][1] == hand[1][1] or hand[1][1] == hand[2][1] or hand[0][1] == hand[2][1]:
|
||||
return '对子'
|
||||
# 检测特殊牌型235
|
||||
if sorted([card[1] for card in hand]) == ['2', '3', '5']:
|
||||
return '特殊'
|
||||
# 如果以上都不是,则为单张
|
||||
return '单张'
|
||||
|
||||
# 模拟游戏
|
||||
def game(deck):
|
||||
random.shuffle(deck)
|
||||
player_hand = random.sample(deck, 3)
|
||||
return check(player_hand)
|
||||
|
||||
# 主函数
|
||||
def main():
|
||||
# 初始化牌型计数器
|
||||
types = {'豹子': 0, '顺金': 0, '金花': 0, '顺子': 0, '对子': 0, '单张': 0, '特殊': 0}
|
||||
# 模拟10000次游戏
|
||||
for _ in range(10000):
|
||||
type = game(deck)
|
||||
types[type] += 1
|
||||
# 计算并打印概率
|
||||
for type, count in types.items():
|
||||
print(f"{type}: {count / 10000:.4f}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in new issue