正态分布随机数产生方法
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μσnZ_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−t22dtP\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
正态分布随机数产生方法相关推荐
- 【深度学习的数学】绘制2×3×1层带sigmoid激活函数的神经网络感知机输出函数的三维图像(神经网络参数使用正态分布随机数)
阅读博客时,神经网络的输入变量刚好为两个,输出变量为1个,于是想绘制一下输出函数的三维图像是什么样的 代码 # -*- coding: utf-8 -*- """ @Fi ...
- python生成50个随机数_Python内置random模块生成随机数的方法
本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...
- 生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成
描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数.. 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ...
- python产生随机数random.random_Python内置random模块生成随机数的方法
本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...
- c语言学习进阶-C语言程序产生正态分布随机数
C语言程序产生正态分布随机数 目录 C语言程序产生正态分布随机数 **中心极限定理(大数定理)** **Hasiting有理逼近法:** **反函数产生给定分布的随机数法:** **Box-Mulle ...
- java正态分布随机数_正态分布的随机数
一.功能 产生正态分布\(N(\mu, \ \sigma^2)\). 二.方法简介 正态分布的概率密度函数为 \[f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-(x-\mu) ...
- 正态分布随机数 C语言,正态分布随机数生成算法
<正态分布随机数生成算法>由会员分享,可在线阅读,更多相关<正态分布随机数生成算法(7页珍藏版)>请在人人文库网上搜索. 1.概率论与数理统计课程设计题目:正态分布随机数生成算 ...
- python中的random模块_Python内置random模块生成随机数的方法
本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...
- python random库生成伯努利随机数的方法_详解Python基础random模块随机数的生成
随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入ran ...
- 如何用均匀分布随机数生成正态分布随机数
文章目录 前言 The Box–Muller transform The Ziggurat algorithm(金字形神塔) 附录:Inverse transform sampling直观解释 前言 ...
最新文章
- cass有坐标文件生成里程文件_怎样用CASS生成里程文件,带桩号的
- Oracle 裁员史:技术人死于重组,卒于云计算
- 操作系统:Win10的沙盒是什么,如何使用,看完你就懂了!
- 云桌面部署_东胜区检察院检察工作网统一业务系统2.0云桌面终端全面部署完成...
- filter以及reduce的用法
- ucserver admin.php,如何修改discuz管理员密码以及Ucenter初始管理密码
- 视力测试软件正确吗,体检视力测试
- 彼得•林奇基层调查选股法(GARP股票投资策略)
- QT警告Slots named on_foo_bar are error prone
- 蓝牙耳机南卡和vivo哪个好用?南卡与vivo实际评测!
- 关于前端接口报错500原因
- 给大家分享一个很好用的屏幕共享小软件
- 美国Linux服务器系统内核的详细介绍
- html css 边框不显示,css怎么设置不显示下边框?
- Python 之 小白爬虫
- Python-pandas拆分列与堆叠列
- 英特尔迅驰二代风尚盛典刮起酷炫风暴!
- 盘点 2021 年严重的网络攻击事件
- 建堆的时间复杂度详解
- 金融时间序列分析:1. 基础知识