如何用Python模拟非随机概率3连胜小游戏并修正单轮计数问题
3连胜小游戏模拟:修正计数错误并输出独立轮次数据
问题根源
原代码中streak_counter和videos_watched在所有轮次间共享,未在每轮游戏开始时重置,导致输出的是累计观看次数,而非单轮独立数据。
修正后的代码
import random outcome = [1, 0] total_trials = 10 total_videos_watched = 0 for iteration in range(total_trials): current_streak = 0 round_videos = 0 # 每轮游戏前重置单轮计数 while current_streak < 3: # 65%概率猜对(1),35%概率猜错(0) result = random.choices(outcome, weights=(65, 35), k=1)[0] round_videos += 1 if result == 1: current_streak += 1 else: current_streak = 0 # 按要求格式输出单轮结果 print(f"iteration {iteration + 1} : {round_videos}") total_videos_watched += round_videos # 计算并输出平均次数 average = total_videos_watched / total_trials print(f"\n平均获胜所需观看视频次数: {average:.2f}")
关键修改点
- 将
current_streak(原streak_counter)和round_videos(原videos_watched)移至for循环内部,每轮游戏启动时重置为0,保证轮次数据独立。 - 优化变量命名,提升代码可读性。
- 补充了平均次数计算,满足问题中"求解平均获胜所需次数"的需求。
内容的提问来源于stack exchange,提问作者ferrycor
相关产品推荐
相关产品推荐

