基于大样本模拟验证双人抽石子游戏的先手优劣性问题
抽石子游戏先手优势分析与模拟验证
问题描述
双人回合制抽石子游戏:玩家A(先手)与B(后手)轮流从袋中抽取石子,袋内共10颗石子,其中9颗白色、1颗黑色,抽到黑色石子的玩家判定落败。需要分析交替抽取规则下,先手属于优势、劣势还是无影响,并用大样本数据模拟验证结论。
原模拟代码问题说明
你提供的代码存在多处语法与逻辑错误,无法完成有效模拟:
- 非类方法错误使用
self参数 - 语法疏漏(如
player2Wins += 1 print("Player 2 won")缺少语句分隔符) - 未实现多局游戏循环,仅执行了一次无效抽选
- 抽选逻辑不符合真实回合交替流程
修正后的模拟代码
import random # 游戏参数配置 total_stones = 10 total_simulations = 100000 player1_wins = 0 player2_wins = 0 for _ in range(total_simulations): # 每局初始化:生成石子列表并打乱,模拟黑石子随机分布 stones = ["white"] * 9 + ["black"] random.shuffle(stones) current_player = 1 # 1代表先手玩家,2代表后手玩家 for stone in stones: if stone == "black": # 抽到黑石子的玩家落败,统计对方胜利次数 if current_player == 1: player2_wins += 1 else: player1_wins += 1 break # 抽到白石子,切换当前玩家 current_player = 2 if current_player == 1 else 1 # 输出模拟结果 print(f"总模拟局数:{total_simulations}") print(f"先手玩家获胜次数:{player1_wins},胜率:{player1_wins / total_simulations:.2%}") print(f"后手玩家获胜次数:{player2_wins},胜率:{player2_wins / total_simulations:.2%}")
结论分析
概率推导
黑石子在第1-10回合被抽到的概率均等(各1/10):
- 若黑石子在奇数回合(1、3、5、7、9)被抽到:先手玩家抽中,后手获胜
- 若黑石子在偶数回合(2、4、6、8、10)被抽到:后手玩家抽中,先手获胜
两种情况各占5次,因此先手与后手的获胜概率均为50%,先手无优势也无劣势。
模拟验证
运行修正后的代码,大样本模拟结果会趋近于50%胜率,与概率推导结论完全一致。
内容的提问来源于stack exchange,提问作者MobyNick
相关产品推荐
相关产品推荐

