不同样本量与lambda值的泊松分布模拟实现问题
泊松分布模拟的嵌套循环实现
需求说明
模拟服从泊松分布的随机变量X ~ Pois(k - lambda),其中常数k=20,lambda取值为c(2, 4, 8, 16),每个lambda对应生成样本量n从1到25的模拟结果。
原代码问题
原代码中rpois(n, k - lambda)的参数逻辑错误:rpois要求第一个参数是单一样本量,第二个参数是对应分布参数,但原代码中n是长度为10的向量、lambda是长度为4的向量,导致输出结果完全不符合预期。
解决方案:嵌套循环实现
使用嵌套循环分别遍历lambda值和样本量n,逐个生成并输出对应样本:
# 定义参数 k <- 20 lambda_values <- c(2, 4, 8, 16) max_n <- 25 # 嵌套循环生成样本 for (lambda in lambda_values) { cat("=== Lambda =", lambda, "===\n") for (n in 1:max_n) { samples <- rpois(n, k - lambda) cat(paste(samples, collapse = ", "), "\n") } cat("\n") # 分隔不同lambda的结果 }
代码说明
- 外层循环:遍历每个lambda值,先打印当前lambda的标识行,方便区分结果
- 内层循环:从n=1到n=25,每次生成n个符合
Pois(20 - lambda)的随机样本 - 用
paste(..., collapse = ", ")将样本拼接为逗号分隔的字符串,输出格式与预期一致 - 每个lambda的结果打印完成后,输出空行分隔不同lambda的结果
示例输出(lambda=8时)
11
12, 11
13, 11, 14
11, 14, 14, 14
......
10, 9, 13, 13, 13, 11, 8, 17, 10, 11, 13, 11, 17, 13, 9, 8, 13, 15, 10, 10, 15, 14, 14, 15, 9
内容的提问来源于stack exchange,提问作者Jose Moquiambo
相关产品推荐
相关产品推荐

