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

R语言计算篮球投篮累积方差的模拟代码正确性验证

代码正确性判断与解析

你的这段R代码整体完全符合需求,核心逻辑、模拟流程和可视化都正确,以下是具体验证:

核心逻辑验证

  • 投篮结果生成:rbinom(n_shots, 1, prob_success)正确生成了符合伯努利分布的0-1投篮数据(1为命中,0为未命中),成功概率0.5设置准确。
  • 累积方差计算:
    • 第一次投篮后返回0,满足题目要求;
    • 当投篮次数j>1时,用var(shots[1:j])计算前j次的样本方差(R中var()默认使用n-1作为分母),这是统计上计算样本方差的标准做法。而你标注的红色虚线0.25是伯努利分布的总体方差(公式为p(1-p)),随着投篮次数增加,样本方差会逐渐收敛到这个值,和你的可视化趋势完全匹配。

模拟与存储逻辑验证

  • 用matrix(nrow = n_shots, ncol = n_simulations)存储100次模拟的累积方差,行对应投篮次数、列对应模拟次数,结构设计合理,能清晰存储所有模拟结果。
  • 设置set.seed(123)保证了模拟结果的可复现性,这是统计模拟中的良好实践。

可视化逻辑验证

  • 先绘制第一次模拟的曲线,再循环叠加其余99次模拟的曲线,ylim = range(cumulative_variances)确保所有曲线都能完整显示在图中;
  • 红色虚线标注总体方差0.25,直观展示了样本方差的收敛趋势,且第一次投篮的方差为0的要求也在图中得到体现,和你提供的可视化结果一致。

小优化建议(非必须)

原代码中用sapply计算累积方差的写法是正确的,但如果需要提升大样本下的运行效率,可以改用循环实现:

# 替换原代码中sapply的部分
cum_var <- numeric(n_shots)
cum_var[1] <- 0
for(j in 2:n_shots) {
  cum_var[j] <- var(shots[1:j])
}
cumulative_variances[,i] <- cum_var

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:47:56