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

R语言蒙提霍尔模拟结果异常:为何胜率未达约66%?

蒙提霍尔问题模拟修正方案

代码中的核心问题

  • 变量名不匹配:代码里误用了vyber1和pozicia_ceny,但实际定义的变量是pick1和price_position,拼写错误导致reveal的计算逻辑完全失效。
  • 获胜条件判断错误:Karla选择更换门后,获胜逻辑应为:初始选择未中奖时,更换必中;初始选中时,更换必不中。原代码的判断逻辑完全不符合这个规则。

修正后的代码

Karla_simulation <- function() {
  # 随机设置奖品位置
  prize_position <- sample(1:3, 1)
  # Karla初始选择一扇门
  pick1 <- sample(1:3, 1)
  
  # 主持人揭晓一扇无奖且未被选中的门
  possible_reveal <- setdiff(1:3, c(pick1, prize_position))
  reveal <- sample(possible_reveal, 1)
  
  # Karla更换选择:剩下的那扇门
  final_pick <- setdiff(1:3, c(pick1, reveal))
  
  # 判断是否获胜
  if (final_pick == prize_position) {
    return(1)
  } else {
    return(0)
  }
}

repetitions <- 100000
Karla_wins <- numeric(repetitions)
for (i in seq_along(Karla_wins)) {
  Karla_wins[i] <- Karla_simulation()
}

probability <- sum(Karla_wins)/repetitions
probability

修正说明

  1. 统一变量名:把拼写错误的vyber1改为pick1,pozicia_ceny改为prize_position(同时修正了price的拼写错误,正确应为prize)。
  2. 修正主持人揭门逻辑:正确筛选出主持人可揭晓的门——必须是无奖且未被Karla初始选中的门。
  3. 明确更换选择的逻辑:计算Karla更换后的最终选择,直接判断该选择是否等于奖品位置,完全贴合蒙提霍尔问题中更换选择的获胜规则。

运行修正后的代码,10万次模拟后的获胜概率会接近0.666,符合理论预期。

内容的提问来源于stack exchange,提问作者Ondrej Puškár

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:12:24