随机多元正态分布

4

我遇到了一个问题,需要在Java中生成一个多元正态分布的随机数集合,该分布的均值为0,方差协方差矩阵为给定的3*3矩阵。

有没有简单的方法可以实现这个需求呢?


如果你正在寻找一个库,可能Apache Commons Math有类似这种情况的东西。(尽管在这种情况下,可能http://softwarerecs.stackexchange.com/是一个更好的询问网站。) - Gábor Bakos
2个回答

4

1) 使用库实现,正如Dima所建议的。

或者,如果你真的有冲动要自己完成:

2) 假设您想使用平均向量M和方差/协方差矩阵V生成法线,请对V执行Cholesky分解来得到下三角矩阵L,使得V=LLt(其中上标t表示转置)。生成一个由三个独立标准正态分布组成的向量Z(使用Random.nextGaussian()获取各个元素)。然后LZ + M将具有所需的多维正态分布。


2

Apache Commons拥有您所需的内容:

MultivariateNormalDistribution mnd = new MultivariateNormalDistribution(means, covariances);
double vals[] = mnd.sample();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接