我遇到了一个问题,我必须能够在Java中生成一组随机选择的多元正态分布数,其均值为0,给定3 * 3方差 - 协方差矩阵。
这样做有简单的方法吗?
答案 0 :(得分:4)
1)使用Dima建议的库实现。
或者,如果您真的觉得需要自己做这件事:
2)假设你想要生成具有平均向量M和方差/协方差矩阵V的法线,在V上执行Cholesky Decomposition以得到下三角矩阵L,使得V = LL t (其中上标t表示转置)。生成三个独立标准法线的向量Z(使用Random.nextGaussian()
来获取各个元素)。然后LZ + M
将具有所需的多元正态分布。
答案 1 :(得分:2)
Apache Commons有你想要的东西:
MultivariateNormalDistribution mnd = new MultivariateNormalDistribution(means, covariances);
double vals[] = mnd.sample();