在R中计算模拟随机变量概率:A到B最短路径旅行时间分析
模拟从A到B的每日最快路径旅行时间(指数分布场景)
我来帮你把这个路径模拟的内容整理并补充完整,方便你理解和复用:
场景背景:需要从节点A前往节点B,每天都会选择最快路径,各节点间的旅行时间(单位:小时)服从指数分布,我们已经在R中完成了1000次模拟,各路段对应的lambda参数如下:
首先是生成模拟数据的R代码:
# 生成1000次模拟的各路段旅行时间 AtoX <- rexp(1000, 4) # A到X,lambda=4,期望0.25小时 AtoY <- rexp(1000, 2.5) # A到Y,lambda=2.5,期望0.4小时 XtoY <- rexp(1000, 10) # X到Y,lambda=10,期望0.1小时 YtoX <- rexp(1000, 10) # Y到X,lambda=10,期望0.1小时 XtoB <- rexp(1000, 3) # X到B,lambda=3,期望≈0.33小时 YtoB <- rexp(1000, 5) # Y到B,lambda=5,期望0.2小时
计算每日最快路径的旅行时间
从A到B的所有可行路径有4条,我们需要计算每条路径的总时间,然后每天取最短的那条作为当日的旅行时间:
# 计算每条路径的总旅行时间 path_A_X_B <- AtoX + XtoB # 路径1:A→X→B path_A_Y_B <- AtoY + YtoB # 路径2:A→Y→B path_A_X_Y_B <- AtoX + XtoY + YtoB # 路径3:A→X→Y→B path_A_Y_X_B <- AtoY + YtoX + XtoB # 路径4:A→Y→X→B # 逐天筛选最快路径的时间 daily_fastest_time <- pmin(path_A_X_B, path_A_Y_B, path_A_X_Y_B, path_A_Y_X_B) # 计算1000次模拟的每日平均旅行时间 avg_daily_time <- mean(daily_fastest_time) cat("模拟得到的每日平均旅行时间:", round(avg_daily_time, 2), "小时\n")
一些关键说明
- 指数分布的
rexp(n, lambda)函数中,lambda是率参数,该分布的期望旅行时间为1/lambda,比如A→X路段的平均旅行时间是0.25小时。 pmin()函数可以高效地对多个向量逐元素取最小值,完美适配我们“每天选最快路径”的需求。- 1000次模拟的样本量足够大,能得到比较稳定的平均结果,如果需要更精确的数值,可以增加模拟次数(比如改成10000次)。
内容的提问来源于stack exchange,提问作者The Pointer
相关产品推荐
相关产品推荐

