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

抛硬币游戏多轮后资金≤0的概率计算验证及疑问

抛硬币游戏中每轮资金为负的概率计算疑问

我遇到一个抛硬币游戏场景:初始资金为5美元,每轮赢1美元或输1美元的概率均为0.5。我想计算在20轮游戏中,每一轮结束时资金为0美元或更少的概率。

我尝试通过手动枚举每一轮的所有可能游戏结果来统计概率,实现逻辑如下:

初始化代码

library(dplyr)
library(purrr)
library(ggplot2)

initial_amount <- 5
outcomes <- c(-1, 1)  

df <- data.frame(turn_number = integer(), score = numeric())

统计每轮结果与资金

for (i in 1:20) {
  combinations <- expand.grid(rep(list(outcomes), i))
  
  calculate_score <- function(row) {
    initial_amount + sum(row)
  }
  scores <- apply(combinations, 1, calculate_score)
  
  df_turn <- data.frame(turn_number = rep(i, length(scores)), score = scores)
  
  df <- rbind(df, df_turn)
}

分析资金为负的占比

df_summary <- df %>%
  group_by(turn_number) %>%
  summarise(positive_score_percent = sum(score > 0) / n() * 100,
            negative_score_percent = sum(score <= 0) / n() * 100)

绘制结果图

ggplot(df_summary, aes(x = turn_number, y = positive_score_percent)) +
geom_point() +
geom_line() +
labs(title = "Percentage of Positive Scores Over Turns",
     x = "Turn Number",
     y = "Percentage of Positive Scores") +
scale_x_continuous(breaks = unique(df_summary$turn_number)) +
theme_bw()

每轮正资金占比结果图

我的疑问:

  1. 这个实现是否正确?
  2. 图表开头趋势符合逻辑——前5轮不可能出现负资金,但我认为后期正资金的概率应持续下降,实际却并非如此,这是为什么?

回答

1. 实现的正确性

你的代码逻辑是正确的:通过expand.grid枚举每一轮所有可能的胜负组合,计算每一种组合的最终资金,再统计正负资金的占比。这种穷举法在轮数较少(比如20轮,总组合数2^20≈100万,R可以处理)的情况下是可行的,结果的统计也是准确的。

2. 正资金概率不持续下降的原因

你觉得后期正资金概率应该持续下降,是忽略了对称随机游走的回归特性:

  • 对于每步胜负概率相等的对称随机游走,从初始资金5美元出发,每一步的期望资金始终是5美元。当轮数增加,资金的分布会越来越分散,但期望始终保持在初始值附近。
  • 随着轮数增多,资金跌到0以下的可能性确实会增加,但同时资金涨到更高正数的可能性也会同步增加,两者的占比变化并非单向下降,而是会逐渐向50%靠拢(当轮数趋向无穷大时,根据大数定律,正资金的概率会趋近于0.5)。
  • 比如第6轮第一次出现资金≤0的可能,但后续轮数中,胜负组合的多样性会让正负资金的占比呈现波动式的收敛,而非持续下降。

内容的提问来源于stack exchange,提问作者Uk rain troll

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:50:07