正态分布的随机数

一、功能

产生正态分布(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文件参见均匀分布的随机数

原文地址:https://www.cnblogs.com/liam-ji/p/11624215.html