我已经找到了程序化获取生成正态分布的随机数的指南;但是,我需要展开一个数,以便它反映正态分布(在尽可能短的计算时间内)。
例如,我有一个项目在2050年花费了500000美元,我想用20年的标准差来分摊。这将导致第一个标准差(2030年至2070年)下的区域具有(68%*500000美元)的成本。
我的代码中是否有可以用来实现这一点的公式我现在唯一能想到的方法是使用Box-Muller随机生成器,循环遍历每一美元来生成分布,这绝对是不有效的。
最佳答案
注意,正态分布下的总值是1。因此,您只需要找出在某个时间段内曲线累积的百分比,然后乘以总成本。
不是正态分布,而是正态cdf(累积密度函数)。
因此,总结一下:要找到给定年份范围内的成本,可以找到这些年份的规范化值,将它们插入cdf函数,然后乘以总成本:
start = (start_year-0.5-median)/stddev;
end = (end_year+0.5-median)/stddev;
cost = total_cost*(Phi(end)-Phi(start));
关于c# - 如何按正态分布分配成本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31486627/