如何产生正态分布的随机数?
如何产生正态分布的随机数 问题点数:20、回复次数:6Top
1 楼huwei_008(写程序就跟开极品飞车一样,得不停的追,不停的开,不停的写啦!)回复于 2002-06-16 04:39:49 得分 0
帮你up一下吧,主要是现在学习加上其他事实在很忙,没办法
过段时间我想我能想出来Top
2 楼fatboyslim(没着没落)回复于 2002-06-16 12:54:42 得分 0
关注
UPTop
3 楼ml_jack(mljack)回复于 2002-06-16 13:08:56 得分 2
设 F(X)正态分布的分布函数
rnd(0,1)为产生(0,1)间均匀分布随机数的发生函数
则Y=G(rnd(0,1))得到的随机数符合正态分布(其中G(X)为F(X)的反函数)
以上结论只需F(X)为一种分布的分布函数即可,即可对应分布的产生随机数
参见:Matlab中的随机数产生函数Top
4 楼yhsoft(演卞)回复于 2002-06-16 21:13:16 得分 0
其实我现在用的就是Matlab中的Randn()来产生正态分布的随机数。整个控制部分用VC写的,计算由Matlab的库函数负责,可现在有可能需要自己写这个函数。Top
5 楼tobegod(本能)回复于 2002-06-16 22:28:42 得分 0
在C语言的库函数里面有一个函数是有这样功能的
你找找吧,我忘了具体的名称了.Top
6 楼saint001(saint001)回复于 2002-06-17 17:29:41 得分 18
由(0,1)均匀分布转换成正态分布,概率书上的三种方法:
第一种就是那种求分布函数反函数的方法,但对正态分布不太可行,不大好编程;
第二种是由瑞利分布导出的公式,
若x1,x2是(0,1)上的均匀分布
则y1=(-2*ln(x1))^.5*cos(2*pi*x2)
y2=(-2*ln(x2))^.5*sin(2*pi*x1)
是标准正态分布的随机数
第三种是近似生成,独立同分布的多个随机变量和的分布趋近于正态分布,
取k个均匀分布的(0,1)随机变量x1,x2,...,xk,则它们的和近似服从正态分布.
实践中,取k=12,(因为D(xi)=1/12),则新的随机变量y=x1+x2+...+x12-6可以满足一般精度下的N(0,1)的要求.(因 E(y)=0,D(y)=12*1/12=1)'.
c语言中可用stdlib库中的函数来生成(0,1)中的随机数
1.0*rand()/RAND_MAX
RAND_MAX为stdlib.h中已定义的rand函数产生的最大的随机数.Top




