一、功能
产生正态分布(N(mu, sigma^2))。
二、方法简介
正态分布的概率密度函数为
[f(x)=frac{1}{sqrt{2pi}sigma}e^{-(x-mu)^{2}/2sigma^{2}}
]
通常用(N(mu, sigma^2))表示。式中(mu)是均值,(sigma^2)是方差。正态分布也称为高斯分布。
设(r_{1}, r_{2}, ..., r_{n})为(0,1)上(n)个相互独立的均匀分布的随机数,由于(E(r_{i})=frac{1}{2}),(D(r_{i})=frac{1}{12}),根据中心极限定理可知,当(n)充分大时
[x=sqrt{frac{12}{n}}left ( sum_{n}^{i=1}r_{i}-frac{n}{2}
ight )
]
的分布近似正态分布(N(0, 1))。通常取(n=12),此时有
[x=sum_{12}^{i=1}r_{i}-6
]
最后,再通过变换(y=mu+sigma x),便可得到均值(mu)、方差为(sigma^2)的正态分布随机数(y)。
三、使用说明
使用C语言编程生成正态分布函数(N(0, 1))
/************************************
a ---给定区间下限
b ---给定区间上限
seed ---随机数种子
************************************/
#include "uniform.c"
double gauss(double mean, double sigma, long int *s)
{
int i;
double x;
double y;
for(x = 0, i = 0; i < 12; i++){
x += uniform(0.0, 1.0, s);
}
x = x - 6.0;
y = mean + x * sigma;
return(y);
}
uniform.c文件参见均匀分布的随机数