如何通过特定分布在Excel中生成随机日期?

时间:2016-01-11 11:31:03

标签: excel vba excel-vba date

我需要在特定年份之间生成X(以便于使用1000个),例如在19/1年1月1日到2000年1月1日之间的平均值约为1/1/1980(1957-1985)

现在我知道Excel日期计算是基于天数。 所以:

01/01/1950  = 18264
01/01/2000  = 36526
01/01/1980  = 29221

所以min是18264,最大值是36526.其中平均值是29221,其中大部分是在27395和31048之间生成的。

我可以用什么方法实现这一点,这可以通过excel公式或VBA来实现。

现在我用这个生成日期:=RANDBETWEEN(DATE(1950,1,1),DATE(2000,1,1))

但是,这确实没有给我想要的数据。因为我不是在寻找统一的分布。

有人能引导我朝着正确的方向前进,我无法找到或实现这一目标。

更新 我正在寻找的分布看起来像这样: enter image description here

其中-5是1950而5是2000.我会得到紫色图,或红色,或绿色或蓝色。不是一次全部。 F 或问题的缘故可以使用紫色图表

UPDATE2 我希望能够用随机数据生成的最终图形看起来像这样。通过更改参数,整个图形可以以不同的方式移动。 enter image description here

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

公式=NORM.INV(RAND(), 29221, SQRT(20))将创建正态分布的随机图形,方差为20,平均值为29221(对应于1980年1月1日)。您可能希望参数引用其他单元格而不是在公式中进行硬编码。请注意,SQRT(20)对应

旧版本的Excel具有等效的NORMINV功能。

这些是您的发行版的分位数函数。

如果你想要另一个形状(例如问题中的偏斜分布),那么你需要自己构建分位数函数。您可以通过将PDF转换为CDF(通过集成)并交换轴来完成此操作。可能是VBA的工作。

答案 1 :(得分:2)

您似乎需要比例为2/3的beta版本。正态分布的问题是它的对称性,而且它没有Max和Min。 beta发行版提供了这些。

试试这个:

=BETA.INV(RAND(), 3, 2, 18264, 36526)