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

如何在R语言中生成带模式的向量/序列并构建概率表

嘿,看来你是想构建几何分布的概率表,同时好奇怎么高效生成那种特定模式的向量对吧?其实我们可以用R的向量化特性大幅简化代码,不用手动逐个创建x1到x4这类向量~

方法一:直接利用几何分布公式(最简洁高效)

你手动计算的概率本质上是几何分布的概率值:( P(X=k) = p \times (1-p)^k ),其中( p=0.1 ),( k )从0到4。直接用公式计算就行,完全不需要生成那些中间向量:

# 定义参数
k <- 0:4
p_success <- 0.1

# 计算概率
probabilities <- p_success * (1 - p_success)^k

# 生成并输出表格
result_table <- data.frame(k, P = probabilities)
write.table(result_table, row.names = FALSE, sep = "\t")

运行这段代码会直接得到你想要的结果:

k	P
0	0.1
1	0.09
2	0.081
3	0.0729
4	0.06561

方法二:生成你要的模式向量(如果需要学习矩阵操作)

如果确实想生成那种“前m个1,后面都是0.9”的向量组,我们可以用矩阵来批量生成,再按列相乘得到目标乘积向量:

n <- 5  # 最终向量的长度
num_vectors <- 4  # 需要生成的向量数量

# 创建初始矩阵,所有元素为1
pattern_matrix <- matrix(1, nrow = num_vectors, ncol = n)

# 给每行设置对应的0.9区域:第i行从第(n - i + 1)列开始变为0.9
for (i in 1:num_vectors) {
  pattern_matrix[i, (n - i + 1):n] <- 0.9
}

# 按列相乘得到vec_mult
vec_mult <- apply(pattern_matrix, 2, prod)

# 计算概率并输出表格
p_success <- 0.1
k <- 0:(n-1)
probabilities <- p_success * vec_mult

write.table(data.frame(k, P = probabilities), row.names = FALSE, sep = "\t")

这段代码会先生成你想要的4个向量组成的矩阵,再通过列乘积得到vec_mult,最终和你手动计算的结果一致。不过显然第一种方法更直接,因为它抓住了问题的本质——这就是几何分布的概率计算~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:09:21