java中实现正态分布

正态分布(Normal distribution)

正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),

最早由A.棣莫弗在求二项分布的渐近公式中得到。

C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。

是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。

正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。

若随机变量X服从一个数学期望为μ、方差为σ^2的正态分布,记为X~N(μ,σ^2)。

其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

JDK中Random类中的nextGaussian()方法,可以产生服从标准正态分布的随机数。即 X~N(0,1);

如果我们想产生自定义的正态分布呢 X~N(μ,b) b=σ^2;

可以用Math.sqrt(b)*random.nextGaussian() + μ;实现

这个公式的意思是 

方差 * 正态分布数据 + 正态分布中心位置

产生N(a,b)的数:Math.sqrt(b)*random.nextGaussian()+a;

即均值为a,方差为b的随机数

方差是什么意思?

方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。

简单一句话就是:方差是衡量源数据和期望值相差的度量值。 

具体代码实现:

    @Test
    public void test2() {
        Random r = new Random();
        for (int i = 0; i < 10000; i++) {
            double v = r.nextGaussian() * Math.sqrt(10) + 53;
            System.out.println(v);
        }
    }

java中实现正态分布_第1张图片

 生成的数据类似于上图

方差越大,正态分布底峰越大

    @Test
    public void test2() {
        Random r = new Random();
        for (int i = 0; i < 10000; i++) {
            int  v = (int)(r.nextGaussian() * 4000 + 20000);
            System.out.println(new StringBuilder(String.valueOf(v)).insert(2,"-"));
        }
    }

java中实现正态分布_第2张图片

你可能感兴趣的:(Java,大数据)