随机多元正态分布
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
将具有所需的多元正态分布。
我遇到了一个问题,我必须能够在 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
将具有所需的多元正态分布。