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

双指数分布模拟:新作业等待时间仿真方法是否正确?

仿真逻辑正确性与代码问题分析

仿真逻辑是否正确?

你的仿真逻辑是正确的。两台CPU独立工作,而指数分布具备无记忆性——无论它们已运行多久,剩余服务时间仍服从原参数的指数分布。新作业的等待时间就是两台CPU中先完成当前作业的时间,也就是两个独立指数随机变量的最小值,用min(cpu1[i], cpu2[i])模拟单次等待时间完全符合场景。

代码存在的错误

  1. 语法错误:else分支里错误嵌套了data.frame:

    df1 <- rbind(df1, data.frame(waiting_time=data.frame(waiting_time=min(cpu1[i], cpu2[i])))
    

    这会让df1$waiting_time变成嵌套数据框而非数值型向量,后续计算均值时可能报错。

  2. 低效的循环rbind:用for循环逐行rbind构建数据框效率极低,n=10000时每次rbind都会复制整个已有数据框,时间复杂度为O(n²),运行速度会很慢。

优化后的代码

无需循环,直接用向量化操作高效完成:

# 生成两组指数分布数据
cpu1 <- rexp(n = 10000, rate = .1)
cpu2 <- rexp(n = 10000, rate = .05)

# 向量化计算所有等待时间
waiting_times <- pmin(cpu1, cpu2)

# 转换为数据框(按需保留)
df1 <- data.frame(waiting_time = waiting_times)

# 计算均值
mean(df1$waiting_time)

pmin()可直接计算两个向量对应位置的最小值,既避免语法错误,又大幅提升效率。

另外从理论角度,两个独立指数变量(速率λ₁=0.1、λ₂=0.05)的最小值仍服从指数分布,速率为λ₁+λ₂=0.15,理论均值为1/0.15≈6.6667分钟,你仿真得到的均值应接近这个值,可用来验证结果合理性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:55:49