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

R语言如何按指定概率继承规则实现矩阵扩展?

实现代码及说明

以下是可直接运行的完整实现脚本,你可以按需调整参数p的取值:

# 定义原矩阵
Mt <- matrix(c(0,1,1,0,1,0), nrow = 2, ncol = 3)
# 定义概率参数p,可根据需求修改
p <- 0.5

# 1. 从原矩阵中随机抽取1行作为生成新行的基准行
sample_row_idx <- sample(nrow(Mt), 1)
base_row <- Mt[sample_row_idx, ]

# 2. 初始化2行新矩阵,默认值为0(天然符合原行0位置继承为0的规则)
new_rows <- matrix(0, nrow = 2, ncol = ncol(Mt))

# 3. 逐列处理基准行取值为1的位置,按概率生成新行对应值
for (col in 1:ncol(Mt)) {
  if (base_row[col] == 1) {
    rand <- runif(1)
    if (rand < p) {
      # 概率p:生成1 1
      new_rows[, col] <- c(1, 1)
    } else if (rand < p + (1-p)/2) {
      # 概率(1-p)/2:生成1 0
      new_rows[, col] <- c(1, 0)
    } else {
      # 概率(1-p)/2:生成0 1
      new_rows[, col] <- c(0, 1)
    }
  }
}

# 4. 拼接原矩阵和新行得到最终结果
Mt_final <- rbind(Mt, new_rows)

# 输出结果
print("原矩阵:")
print(Mt)
print(paste0("随机选中的基准行是第", sample_row_idx, "行"))
print("最终4行3列矩阵:")
print(Mt_final)

补充说明

如果你需要搜索相关功能自主学习,可以参考这几个R基础函数的用法:

  • 随机抽取元素/行:sample()
  • 生成均匀分布随机数做概率判断:runif()
  • 矩阵按行拼接:rbind()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:15:03