You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于大样本模拟验证双人抽石子游戏的先手优劣性问题

抽石子游戏先手优势分析与模拟验证

问题描述

双人回合制抽石子游戏:玩家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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:50:20