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

如何在Base R中实现关联状态的硬币抛掷模拟?

用Base R实现状态关联的硬币抛掷模拟

下面是完全基于Base R的实现代码,逻辑和你描述的状态依赖规则完全一致:

# 定义模拟的总次数
n <- 100

# 创建空的字符向量存储每一次抛掷结果
states <- character(n)

# 生成初始状态:以0.5概率随机选择H或T
states[1] <- sample(c("H", "T"), size = 1, prob = c(0.5, 0.5))

# 循环生成后续状态
for (i in 2:n) {
  prev_state <- states[i - 1]
  # 根据前一个状态设置抽样概率
  if (prev_state == "H") {
    states[i] <- sample(c("H", "T"), size = 1, prob = c(0.6, 0.4))
  } else {
    states[i] <- sample(c("H", "T"), size = 1, prob = c(0.4, 0.6))
  }
}

# 查看前几个结果
head(states)
# 统计H和T的出现次数
table(states)

代码解释

  • 初始化向量:创建长度为n的空字符向量,用来依次存储每次抛掷的状态。
  • 初始状态生成:使用sample()函数以均等概率生成第一个状态,满足你提出的第二步要求。
  • 循环生成后续状态:从第2个元素开始,每次根据前一个状态的取值,切换对应的抽样概率:
    • 当前状态为H时,下一次H的概率为0.6,T为0.4;
    • 当前状态为T时,下一次T的概率为0.6,H为0.4。
  • 结果验证:head()可以快速查看前几个模拟结果,table()用来统计两种状态的总出现次数,和你用markovchain包的输出逻辑一致。

内容的提问来源于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.31 09:31:00