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)