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

求解样本分布:基于R语言的抛硬币问题求助

两枚硬币抛掷的分布求解(R语言)

首先明确核心逻辑:抛掷两枚硬币时,正面次数x和反面次数y满足y = 2 - x,只要算出x的分布,就能直接得到y的分布。

原代码的问题

你的代码存在语法和逻辑错误:

  • R语言抽样函数是小写的sample(),不是大写Sample()
  • 参数位置错误,prob是sample()的内部参数,不能放在括号外
  • 布尔值replace的正确写法是大写TRUE(R语言规范)
  • 不能直接将x,y作为sample()参数,且单个1/4的概率不符合实际分布(不同x取值的概率不同)
  • 括号不匹配,代码结构混乱

正确实现方法

1. 明确理论分布

两枚硬币的所有可能结果对应的概率:

  • 0次正面(2次反面):概率1/4
  • 1次正面(1次反面):概率2/4(两种组合:正/反、反/正)
  • 2次正面(0次反面):概率1/4

2. 模拟抽样(获取随机样本)

# 定义x的可能取值和对应概率
x_values <- 0:2
x_probs <- c(1/4, 2/4, 1/4)

# 模拟10次抽样,得到x的结果
sim_x <- sample(x_values, size = 10, replace = TRUE, prob = x_probs)
# 由x推导y的结果
sim_y <- 2 - sim_x

# 查看抽样结果的频率分布
cat("x的抽样频率:\n")
print(table(sim_x))
cat("\ny的抽样频率:\n")
print(table(sim_y))

3. 直接生成理论分布表

如果不需要模拟抽样,直接输出理论分布:

dist_table <- data.frame(
  正面次数_x = 0:2,
  反面次数_y = 2 - 0:2,
  概率_probability = c(1/4, 2/4, 1/4)
)
print(dist_table)

运行上述代码后,就能清晰看到x和y的分布情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:46:42