大部分语言只能产生均匀分布的随机数。C语言用(double)rand()/RAND_MAX产生0到1之间均匀分布的随机数。那么如何产生正态分布的呢?

一般,一种概率分布,如果其分布函数为y=F(x),那么,y的范围是0~1,求其反函数G,然后产生0到1之间的随机数作为输入,那么输出的就是

符合该分布的随机数了:

y= G(x)

以指数分布为例,假设参数为a,那么概率密度函数为y=exp(-a);概率分布函数为y=1-exp(-a)/a。反函数为

y = -ln[(1-y)*a]/a;

MATLAB:

x=rand(1,1000);
a=2;
y=-log((1-x)*a)./a;
hist(y,100)

效果:

但是正态分布不容易这么做,因为分布函数实在有点复杂。

但是正态分布有一个特殊的性质,就是中心极限定理。其他任意分布的随机数,取大量,其均值服从高斯分布。严格的理论是这样的:

对于服从均匀分布的随机变量,只要n充分大,随机变量 就服从均值为零,方差为1的正态分布。所以,很简单,取N个均匀分布的随机变量即可。特别的,一般可以取N=12,由于(0,1)均匀分布的均值为0.5,方差为1/12,因此代入上式,结果为  x1+x2+..+x12-6.编程的时候就很方便。

MATLAB:

n=12;
for j=1:5000
    a=rand(1,n);
    u=sum(a);
    x(j)=(u-n*0.5);
end
hist(x,100);

效果:

【3】最后一个办法,也是最有效的办法,是Box-Muller方法。正态分布的另一特殊性质,与瑞利分布有关。二维正态分布下,两个分量如果独立,那么他的模服从瑞利分布。瑞利分布的话,就可以通过标准的分布函数求反函数的方法求得。

MATLAB:

N=1000;
x1=rand(1,N);
x2=rand(1,N);
y1=sqrt(-2* log(x1)) .* cos(2*pi.*x2);
y2=sqrt(-2* log(x1)) .* sin(2*pi.*x2);
y=[y1,y2];
hist(y,100);

概率算法-均匀分布产生正态分布相关推荐

  1. 两个均匀分布相加、两个正态分布相加、由均匀分布生成正态分布

    文章目录 两个均匀分布相加 两个正态分布相加 由均匀分布生成正态分布 有师兄面试碰到类似问题,记录一下推导过程. 两个均匀分布相加 两个正态分布相加 由均匀分布生成正态分布

  2. 【均匀分布和正态分布】

    目录 均匀分布和正态分布对比 python绘制均匀分布 生成均匀分布数组 均匀分布绘制 正态分布 方差与标准差 均值与方差实际意义 python绘制正态分布图 均匀分布和正态分布对比 均匀分布:只在限 ...

  3. 几种概率分布(伯努利分布、二项分布、泊松分布、均匀分布、正态分布、指数分布、伽马分布)

    伯努利分布(Bernoulli Distribution) 又名两点分布或者0-1分布,是一个离散型概率分布,为纪念瑞士科学家雅各布·伯努利而命名.若伯努利试验成功,则伯努利随机变量取值为1.若伯努利 ...

  4. 数理基础(概率论)------离散型随机变量均匀分布、正态分布、指数分布图像和连续型随机变量泊松分布、二项分布图像

    1.均匀分布 1.1标准均匀分布(0-1) import numpy as np #满足0-1均匀分布 X~U(a,b) a=0,b=1 s1=np.random.rand(1000) print(s ...

  5. 均匀分布rand 正态分布randn 二元高斯分布random的图形 (python实现)

    目录 一:介绍 1 什么是正态分布? 重点知识了解 2 什么是均匀分布 ? 3:二元高斯分布(二元正态分布) 二:编程实现 1: 正态分布 #直方图初判 2:均匀分布 3:高斯(正态)二元分布 一:介 ...

  6. [C++] 使用<random>头文件生成均匀分布、正态分布的数据

    一.摘要 对于满足指定分布的自由变量,如果无法通过分布函数公式计算得到其期望和方差,可以考虑使用采样法得到其期望.方差值的近似值.在此过程中需要按照特定的分布函数进行随机采样,并统计采样数据,可以使用 ...

  7. 如何用均匀分布随机数生成正态分布随机数

    文章目录 前言 The Box–Muller transform The Ziggurat algorithm(金字形神塔) 附录:Inverse transform sampling直观解释 前言 ...

  8. 【随机过程】t分布、卡方分布、F分布、均匀分布、正态分布、指数分布、几何分布、二项分布、泊松分布、0-1分布等分布的分布律、期望、方差和特征函数汇总

    分布 分布律或概率密度 期望 方差 特征函数 0-1分布 P(X=1)=p,P(X=0)=q,0<p<1,p+q=1P(X=1)=p,P(X=0)=q,\\0<p<1,p+q= ...

  9. 均匀分布叠加与正态分布叠加

    1 理论 1.1 两个正态分布之和为正态分布 1.2 均匀分布相减 x 1 ∼ U ( 0 , 1 ) x 2 ∼ U ( 0 , 1 ) z = x 1 − x 2 \begin{array}{l} ...

最新文章

  1. “内卷化”的快手与抖音——2020年短视频的“无聊经济”往何处去
  2. 【shell】常用语法 -b file -c file -f file-d file -x file
  3. 随时随地能写代码, vscode.dev 出手了
  4. python错误异常处理try except Error
  5. [Java并发编程实战] 简介
  6. adobe blueprint
  7. python中none什么意思_如何理解Python中的None
  8. Dreamweaver网页设计与制作100例:用DIV+CSS技术设计的书法主题网站(web前端网页制作课作业)
  9. 常成员函数和静态成员函数
  10. **51 stm8 arduino esp8266 esp32 stm32 树莓派 等单片机使用对比**
  11. Android调用系统应用打开各种类型文件
  12. vue遇到的小问题,封装功能
  13. 思维导图怎么画:这款免费思维导图软件推荐给你
  14. 三星G9006W 6.0 root
  15. 微信订阅号签到功能_微信公众号积分签到功能怎么添加,怎么制作微信签到赚积分...
  16. php获取微信公众号用户信息头像,微信公众号的web页面如何获取微信用户名和头像?...
  17. 互联网时代程序员如何避免知识半衰期?
  18. Redis源代码分析(十一年)--- memtest内存测试
  19. 如何查看本机IP地址(ipconfig命令)
  20. 互联网医院平台源码JAVA+APP全套

热门文章

  1. linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...
  2. linux容器内核配置,如何在Linux内核Centos下使用Sentinel LDK保护Docker容器实例
  3. 浅谈slf4j,logger中的{}功能
  4. CSS制作舞台聚光灯效果
  5. sql查询每科成绩的最高分_编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数...
  6. 2. IMU原理及姿态融合算法详解
  7. JavaScript - 你见过 [].slice.call() 吗?
  8. Python jupyter notebook Katex|Latex
  9. C++中find()函数用法
  10. 超图对接伟景行osg数据使用说明