1、舍选法

参考:如何产生指定分布的随机数?——>舍选法

2、利用中心极限定理

设 X1,X2,⋯,XnX1,X2,⋯,XnX_1,X_2,⋯,X_n 为独立同分布的随机变量序列,均值为μμ μ,方差为 σ2" role="presentation" style="position: relative;">σ2σ2σ^2,则

Zn=X1+X2+⋯+Xn−nμσn−−√Zn=X1+X2+⋯+Xn−nμσn

Z_n=\frac{X_1+X_2+\cdots+X_n-n\mu}{\sigma \sqrt n}

具有渐近分布N(0,1)N(0,1) N(0,1),也就是说当 n→∞n→∞n→∞ 时,

P{X1+X2+⋯+Xn−nμσn−−√≤x}→12π−−√∫x−∞e−t22dtP{X1+X2+⋯+Xn−nμσn≤x}→12π∫−∞xe−t22dt

P\left \{\frac{X_1+X_2+\cdots+X_n-n\mu}{\sigma \sqrt n} \leq x \right \} \rightarrow \frac{1}{\sqrt{2\pi} } \int_{-\infty }^{x} e^{ -\frac{t^2}{2} } \, dt

换句话说,n 个相互独立同分布的随机变量之和的分布近似于正态分布,n 越大,近似程度越好。

根据中心极限定理,生成正态分布就非常简单粗暴了,直接生成n个独立同分布的均匀分布即可。
程序:

clear all
n=unifrnd ( 0,1,200000,1);
N=50;
w=zeros(1,4000);
w(1)=0;for t=1:4000;for j=1:N;w(t)=w(t)+n((j-1)*4000+t);endend
figure(1);
hist(w,400);

结果:

3、Box–Muller算法

当x和y是两个独立且服从(0,1)均匀分布的随机变量时,则

Z1=cos(2πx)⋅–2ln(1–y)−−−−−−−−−√Z1=cos⁡(2πx)⋅–2ln⁡(1–y)

Z_1=\cos (2\pi x) \cdot \sqrt { – 2\ln (1 – y)}

Z2=sin(2πx)⋅–2ln(1–y)−−−−−−−−−√Z2=sin⁡(2πx)⋅–2ln⁡(1–y)

Z_2=\sin (2\pi x) \cdot \sqrt { – 2\ln (1 – y)}

Z0Z0Z_0和Z1Z1Z_1独立且服从标准正态分布。

程序:

clear all;clc;%清屏
m=input('请输入平均值:');
n=input('请输入标准差:');
t=input('请输入数据长度:'); %产生正态分布的随机数
for i=1:t    a=rand;     b=rand;     X1(i)=sqrt((-2)*log(a))*cos(2*pi*b);    X2(i)=sqrt((-2)*log(a))*sin(2*pi*b);   Y1=X1*n+m;    Y2=X2*n+m;
end
% 求平均值和标准差
M1=mean(Y1); N1=std(Y1);
M2=mean(Y2); N2=std(Y2); 

输入:平均值:5;标准差:1;数据长度:100
结果:

输入:平均值:5;标准差:1;数据长度:10000
结果:

参考:https://blog.csdn.net/baimafujinji/article/details/6492982?locationNum=6;
https://cosx.org/2015/06/generating-normal-distr-variates

正态分布随机数产生方法相关推荐

  1. 【深度学习的数学】绘制2×3×1层带sigmoid激活函数的神经网络感知机输出函数的三维图像(神经网络参数使用正态分布随机数)

    阅读博客时,神经网络的输入变量刚好为两个,输出变量为1个,于是想绘制一下输出函数的三维图像是什么样的 代码 # -*- coding: utf-8 -*- """ @Fi ...

  2. python生成50个随机数_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  3. 生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成

    描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数.. 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ...

  4. python产生随机数random.random_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  5. c语言学习进阶-C语言程序产生正态分布随机数

    C语言程序产生正态分布随机数 目录 C语言程序产生正态分布随机数 **中心极限定理(大数定理)** **Hasiting有理逼近法:** **反函数产生给定分布的随机数法:** **Box-Mulle ...

  6. java正态分布随机数_正态分布的随机数

    一.功能 产生正态分布\(N(\mu, \ \sigma^2)\). 二.方法简介 正态分布的概率密度函数为 \[f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-(x-\mu) ...

  7. 正态分布随机数 C语言,正态分布随机数生成算法

    <正态分布随机数生成算法>由会员分享,可在线阅读,更多相关<正态分布随机数生成算法(7页珍藏版)>请在人人文库网上搜索. 1.概率论与数理统计课程设计题目:正态分布随机数生成算 ...

  8. python中的random模块_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  9. python random库生成伯努利随机数的方法_详解Python基础random模块随机数的生成

    随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入ran ...

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

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

最新文章

  1. cass有坐标文件生成里程文件_怎样用CASS生成里程文件,带桩号的
  2. Oracle 裁员史:技术人死于重组,卒于云计算
  3. 操作系统:Win10的沙盒是什么,如何使用,看完你就懂了!
  4. 云桌面部署_东胜区检察院检察工作网统一业务系统2.0云桌面终端全面部署完成...
  5. filter以及reduce的用法
  6. ucserver admin.php,如何修改discuz管理员密码以及Ucenter初始管理密码
  7. 视力测试软件正确吗,体检视力测试
  8. 彼得•林奇基层调查选股法(GARP股票投资策略)
  9. QT警告Slots named on_foo_bar are error prone
  10. 蓝牙耳机南卡和vivo哪个好用?南卡与vivo实际评测!
  11. 关于前端接口报错500原因
  12. 给大家分享一个很好用的屏幕共享小软件
  13. 美国Linux服务器系统内核的详细介绍
  14. html css 边框不显示,css怎么设置不显示下边框?
  15. Python 之 小白爬虫
  16. Python-pandas拆分列与堆叠列
  17. 英特尔迅驰二代风尚盛典刮起酷炫风暴!
  18. 盘点 2021 年严重的网络攻击事件
  19. 建堆的时间复杂度详解
  20. 金融时间序列分析:1. 基础知识

热门文章

  1. 如何使用stripe_使用Stripe和Laravel出售下载内容
  2. 如何隐藏QDockWidget的标题栏
  3. redis从入门到入魔
  4. 元子弹老师-吉他指弹泛音
  5. 青龙自动薅羊毛—【万年历】秒到
  6. j2se学习笔记-Enum枚举类型
  7. php chm中文手册201502月更新
  8. JavaScript入门语法
  9. SpingMVC文件下载,ie浏览器提示无法打开该Internet站点.请求的站点不可用,或找不到.请以后再试.
  10. 一篇就明白什么是H3C?