随机多元正态分布

Random multivariate normal distribution

我遇到了一个问题,我必须能够在 Java 中生成一组随机选择的多元正态分布数,均值为 0 和给定的 3*3 方差-协方差矩阵.

有没有简单的方法来做到这一点?

Apache Commons有你要找的东西:

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

1) 按照 Dima 的建议使用库实现。

或者,如果您真的迫切需要自己做这件事:

2) 假设您要生成具有均值向量 M 和 variance/covariance 矩阵 V 的法线,对 V 执行 Cholesky Decomposition 以得出下三角矩阵 L,使得 V=LLt(其中上标 t 表示转置)。生成三个独立标准法线的矢量 Z(使用 Random.nextGaussian() 获取各个元素)。然后 LZ + M 将具有所需的多元正态分布。