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

R Studio作业求助:抛硬币模拟最长正面连续次数计算报错

抛硬币最长正面连续次数模拟问题排查

问题根源

你遇到的dim(x)需为正值错误,以及得到全0的1×4矩阵,核心是两个操作失误:

  • 错误将toss赋值为数字100,而非你创建的100×2500抛硬币结果矩阵,apply函数无法对无维度的数字进行操作,触发维度错误。
  • 可能存在矩阵维度与apply参数不匹配的情况,导致计算逻辑未作用在正确的重复试验数据上。

修正步骤

1. 确保toss是正确的100×2500矩阵

先确认你创建的矩阵维度正确,比如用以下代码生成符合要求的矩阵(以0代表反面、1代表正面为例):

# 生成100行(单次试验的100次抛硬币)×2500列(2500次重复试验)的矩阵
toss <- matrix(sample(c(0, 1), 100*2500, replace = TRUE), nrow = 100, ncol = 2500)

如果用"H"/"T"表示,代码为:

toss <- matrix(sample(c("H", "T"), 100*2500, replace = TRUE), nrow = 100, ncol = 2500)

用dim(toss)检查输出,确认是100 2500。

2. 修正最长连续正面次数计算代码

如果用0/1表示结果,代码可以简化为:

longest_runs <- apply(toss, 2, function(col) {
  runs <- rle(col)
  max_run <- max(runs$lengths[runs$values == 1], default = 0)
  return(max_run)
})

如果用"H"/"T",你的原逻辑没问题,只需确保toss是正确矩阵:

longest_runs <- apply(toss, 2, function(replication) {
  runs <- rle(replication)
  max_heads_run <- max(runs$lengths[runs$values == "H"], default = 0)
  return(max_heads_run)
})

执行后longest_runs应该是长度为2500的向量,每个元素对应一次重复试验的最长正面连续次数。

3. 计算样本均值与95%置信区间

基于正确的longest_runs,执行以下代码完成(b)部分要求:

# 计算样本均值X̄
x_bar <- mean(longest_runs)
# 计算样本标准差
s <- sd(longest_runs)
# 构建95%置信区间(大样本用正态近似)
confidence_interval <- c(
  x_bar - qnorm(0.975) * s / sqrt(2500),
  x_bar + qnorm(0.975) * s / sqrt(2500)
)

# 输出结果
cat("样本均值:", round(x_bar, 2), "\n")
cat("95%置信区间:(", round(confidence_interval[1], 2), ",", round(confidence_interval[2], 2), ")\n")

内容的提问来源于stack exchange,提问作者Nolan C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:07:31