如何使用Apache Commons从多元正态分布采样随机样本

首先得下载Apache Commons Math以及Apache Commons RNG两个包。然后查看Math包的API文档,可以从里面找到类MultivariateNormalDistribution,如下所示:
这里写图片描述

在往下看可以看到该类的构造函数以及几个方法:
这里写图片描述

第一个画圈的位置就是该类的构造方法,可以很明显看到包含两个参数,一个是该多元正态分布的均值向量,第二个是该多元正态分布的协方差矩阵
第二个画圈的方法createSampler()则是用来生成多元正态分布样本的方法。它包含一个UniformRandomProvider参数,类UniformRandomProvider来自于Apache Commons RNG包(Apache Commons 3.0版本中,用的是RandomGenerator,但是在4.0版本中RandomGenerator已被弃用,推荐使用UniformRandomProvider)。它的简单实用如下图:
这里写图片描述

此外,该方法返回一个sampler对象,具体为:MultivariateRealDistribution.Sampler,它包含一个sample()方法,这个方法就是最终我们用来生成随机样本的方法,如下所示:
这里写图片描述
总结一下:具体的生成步骤则是:

UniformRandomProvider rng = RandomSource.create(RandomSource.MT);
MultivariateNormalDistribution mnd = new MultivariateNormalDistribution(均值数组,协方差矩阵);
MultivariateRealDistribution.Sampler sampl = mnd.createSampler(rng);
double [] a = sampl.sample();

数组a则是我们的一次抽样结果。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页