如何产生正态分布的随机数?

yhsoft 2002-06-15 08:29:14
如何产生正态分布的随机数
...全文
2684 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
saint001 2002-06-17
  • 打赏
  • 举报
回复
由(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函数产生的最大的随机数.
fatboyslim 2002-06-16
  • 打赏
  • 举报
回复
关注
UP
王宏伟80 2002-06-16
  • 打赏
  • 举报
回复
在C语言的库函数里面有一个函数是有这样功能的
你找找吧,我忘了具体的名称了.
yhsoft 2002-06-16
  • 打赏
  • 举报
回复
其实我现在用的就是Matlab中的Randn()来产生正态分布的随机数。整个控制部分用VC写的,计算由Matlab的库函数负责,可现在有可能需要自己写这个函数。
huwei_008 2002-06-16
  • 打赏
  • 举报
回复
帮你up一下吧,主要是现在学习加上其他事实在很忙,没办法
过段时间我想我能想出来
ml_jack 2002-06-16
  • 打赏
  • 举报
回复
设 F(X)正态分布的分布函数
rnd(0,1)为产生(0,1)间均匀分布随机数的发生函数
则Y=G(rnd(0,1))得到的随机数符合正态分布(其中G(X)为F(X)的反函数)
以上结论只需F(X)为一种分布的分布函数即可,即可对应分布的产生随机数

参见:Matlab中的随机数产生函数

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧