我正在做一个模拟,其中一个大任务由一系列独立的小任务并行或串行完成。较小任务的完成时间遵循正态分布,平均时间为“t”,方差为“v”。我知道如果这个任务连续重复说“n”次,那么新的总时间分布是正常的,均值 t*n 和方差 v*n,这很好,但我不知道均值和方差会发生什么如果一组相同的任务同时/并行完成,那么距离 prob stat 类已经有一段时间了。有没有一种很好/快速的方法来为这些并行完成的独立正态分布任务中的“n”个新的时间分布找到新的时间分布?
3 回答
问题是,随机完成时间的最大值(最大值)的分布是什么。一组独立随机变量的最大值的分布函数(即概率密度的不定积分)就是各个变量分布函数的乘积。(最小值的分布函数只是 1 - ((1 - 分布函数)的乘积)。)
如果您想找到一个概率(最大值 > 时间)=(某个给定值)的时间,您可能能够准确地解决这个问题,或者采用数值方法。尽管如此,数值求解方程(例如二分法)比蒙特卡洛方法更快、更准确,正如您所提到的,您已经尝试过。
这不完全是一个编程问题,但您正在寻找的是正态随机变量的顺序统计分布,即耗时最长、最短等的作业的期望值/方差/等。这是均值和方差相同的已解决问题,因为您可以将所有随机变量缩放到已分析的标准正态分布。
这是给你答案的论文,尽管你需要一些数学知识来理解它:
算法 AS 177:预期正常订单统计(精确和近似) JP Royston。皇家统计学会杂志。系列 C(应用统计)卷。31, No. 2 (1982), pp. 161-165
有关更多信息,请参阅stats.stackexchange 上的这篇文章。
如果任务是独立并行执行的,那么直到完成的时间分配取决于最长过程的时间。
不幸的是,max 函数没有特别好的理论分析属性,但如果您已经在模拟,那么有一种简单的方法可以做到这一点。对于每个具有均值 t_i 和方差 v_i 的子过程 i,绘制时间直到每个 i 独立完成,然后查看最大的。重复此多次将为您提供您感兴趣的最大分布中的一堆样本:您可以计算期望(平均值)、方差或任何您想要的。