模拟乒乓球比赛

import random  
  
def simulate_game(player1_ability, player2_ability):  
    """  
    模拟一局乒乓球比赛  
    :param player1_ability: 球员1的能力值  
    :param player2_ability: 球员2的能力值  
    :return: 获胜玩家('player1' 或 'player2')或 'draw'(平局)  
    """  
    player1_score = 0  
    player2_score = 0  
    max_score = 11  
    win_by = 2  
      
    while player1_score < max_score and player2_score < max_score:  
        # 根据能力值随机决定哪一方得分  
        # 这里使用简单的概率模型,能力值越高,得分概率越大  
        if random.random() < player1_ability / (player1_ability + player2_ability):  
            player1_score += 1  
        else:  
            player2_score += 1  
          
        # 检查是否达到获胜条件  
        if player1_score == max_score or player2_score == max_score:  
            return 'player1' if player1_score >= player2_score else 'player2'  
        elif player1_score >= max_score - win_by and player1_score > player2_score:  
            return 'player1'  
        elif player2_score >= max_score - win_by and player2_score > player1_score:  
            return 'player2'  
      
    # 如果达到此点,则为平局(但在实际乒乓球比赛中不会出现)  
    return 'draw'  
  
def simulate_matches(player1_ability, player2_ability, num_matches):  
    """  
    模拟多场乒乓球比赛  
    :param player1_ability: 球员1的能力值  
    :param player2_ability: 球员2的能力值  
    :param num_matches: 模拟比赛的次数  
    :return: 球员1和球员2的获胜次数  
    """  
    wins_player1 = 0  
    wins_player2 = 0  
      
    for _ in range(num_matches):  
        winner = simulate_game(player1_ability, player2_ability)  
        if winner == 'player1':  
            wins_player1 += 1  
        elif winner == 'player2':  
            wins_player2 += 1  
      
    return wins_player1, wins_player2  
  
import random  
  
# ...(之前的simulate_game和simulate_matches函数代码保持不变)...  
  
# 获取用户输入  
player1_ability = int(input("请输入球员1的能力值: "))  
player2_ability = int(input("请输入球员2的能力值: "))  
num_matches = int(input("请输入模拟比赛的次数: "))  
  
# 模拟比赛  
wins_p1, wins_p2 = simulate_matches(player1_ability, player2_ability, num_matches)  
  
# 计算获胜概率  
prob_p1_win = wins_p1 / num_matches  
prob_p2_win = wins_p2 / num_matches  

print(f"模拟了{num_matches}场比赛后,")  
print(f"球员1获胜了{wins_p1}次,获胜概率为:{prob_p1_win:.2%}")  
print(f"球员2获胜了{wins_p2}次,获胜概率为:{prob_p2_win:.2%}")
print(31)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值