R语言多次运行PLE、LE、L随机函数并存储Sum结果到向量咨询
解决方法
你之前重复调用函数未得到预期结果,核心原因是随机数生成逻辑没有封装到单次执行块中,只会在最开始运行一次生成固定值,后续重复调用不会生成新的随机结果。按以下步骤实现即可:
- 首先加载依赖包、定义全局固定参数(仅需执行一次)
# 加载rpert函数所属依赖包 library(mc2d) # 全局固定参数 ID <- c(1) MinP <- c(0.25) MLP <- c(0.4) MaxP <- c(0.55) MinC <- c(1) MLC <- c(2) MaxC <- c(3) confidence <- 4
- 封装单次模拟的计算逻辑
run_one_simulation <- function() { PLE <- rpert(ID, MinP, MLP, MaxP, shape = confidence) LE <- rbinom(ID, size = 1, prob = PLE) L <- rpert(ID, MinC, MLC, MaxC, shape = confidence) return(sum(LE * L)) }
- 重复执行n次,直接得到存储所有Sum结果的向量
# 自定义重复次数n,示例为100次 n <- 100 # replicate实现 sum_result_vec <- replicate(n, run_one_simulation()) # 如需用sapply实现,替换为以下代码即可 # sum_result_vec <- sapply(1:n, function(x) run_one_simulation())
执行完成后sum_result_vec就是存储了n次运行Sum结果的向量。
内容的提问来源于stack exchange,提问作者Fironz
相关产品推荐
相关产品推荐

