MATLAB 生成随机数 方法总汇 (各分布配图参考)
目录
a. 基本随机数
1.rand()
2.randn()
b. 连续型分布随机数
3.unifrnd()
4.normrnd()
5.chi2rnd()
6.frnd()
7.trnd()
8.betarnd()
10.gamrnd()
11.lognrnd()
12.raylrnd()
c. 离散型分布随机数
14.unidrnd()
15.binornd()
16.geornd()
17.poissrnd()
a. 基本随机数
Matlab 中有两个最基本生成随机数的函数。
1.rand()
生成(0,1)区间上均匀分布的随机变量。基本语法:
rand([M,N,P ...])
生成排列成 M*N*P... 多维向量的随机数。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=rand(100000,1);hist(x,30);
由此可以看到生成的随机数很符合均匀分布。
2.randn()
生成服从标准正态分布(均值为 0,方差为 1)的随机数。基本语法和 rand() 类似。
randn([M,N,P ...])
生成排列成 M*N*P... 多维向量的随机数。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=randn(100000,1);hist(x,50);
由图可以看到生成的随机数很符合标准正态分布。
b. 连续型分布随机数
如果你安装了统计工具箱(Statistic Toolbox),除了这两种基本分布外,还可以用 Matlab 内部函数生成符合下面这些分布的随机数。
3.unifrnd()
这个函数生成某个区间内均匀分布的随机数。基本语法
unifrnd(a,b,[M,N,P,...])
生成的随机数区间在 (a,b) 内,排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数都在 (-2,3) 区间内.
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=unifrnd(-2,3,100000,1);hist(x,50);
由图可以看到生成的随机数很符合区间 (-2,3) 上面的均匀分布。
4.normrnd()
此函数生成指定均值、标准差的正态分布的随机数。基本语法
normrnd(mu,sigma,[M,N,P,...])
生成的随机数服从均值为 mu,标准差为 sigma(注意标准差是正数)正态分布,这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的正态分布都是均值为 2,标准差为 3.
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=normrnd(2,3,100000,1);hist(x,50);
如图,上半部分是由上一行语句生成的均值为 2,标准差为 3 的 10 万个随机数的大致分布,下半部分是用小节 “randn()” 中最后那段语句生成 10 万个标准正态分布随机数的大致分布。
注意到上半个图像的对称轴向正方向偏移(准确说移动到 x=2 处),这是由于均值为2的结果。
而且,由于标准差是 3,比标准正态分布的标准差(1)要高,所以上半部分图形更胖 (注意 x 轴刻度的不同)。
5.chi2rnd()
此函数生成服从卡方(Chi-square) 分布的随机数。卡方分布只有一个参数:自由度 v。基本语法
chi2rnd(v,[M,N,P,...])
生成的随机数服从自由度为 v 的卡方分布,这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的卡方分布的自由度都是5
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=chi2rnd(5,100000,1);hist(x,50);
6.frnd()
此函数生成服从 F 分布的随机数。F分布有2个参数:v1, v2。基本语法
frnd(v1,v2,[M,N,P,...])
生成的随机数服从参数为 (v1,v2) 的卡方分布,这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的参数为 (v1=3,v2=5) 的 F 分布
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=frnd(3,5,100000,1);hist(x,50);
从结果可以看出来, F分布集中在 x 正半轴的左侧,但是它在极端值处也很可能有一些取值。
7.trnd()
此函数生成服从 t 分布 (Student's t Distribution,这里 Student 不是学生的意思,而是 Cosset.W.S. 的笔名) 的随机数。t 分布有 1 个参数:自由度 v。基本语法
trnd(v,[M,N,P,...])
生成的随机数服从参数为 v 的t分布,这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的参数为 (v=7) 的 t 分布
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=trnd(7,100000,1);hist(x,50);
可以发现t分布比标准正太分布要 “瘦”,不过随着自由度 v 的增大,t 分布会逐渐变胖,当自由度为正无穷时,它就变成标准正态分布了。
接下来的分布相对没有这么常用,同时这些函数的语法和前面函数语法相同,所以写得就简略一些。
8.betarnd()
此函数生成服从 Beta 分布的随机数。Beta 分布有两个参数分别是 A 和 B。
生成beta分布随机数的语法是:
betarnd(A,B,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=betarnd(3,5,100000,1);hist(x,50);
9.exprnd()
此函数生成服从指数分布的随机数。指数分布只有一个参数: mu。
生成指数分布随机数的语法是:
exprnd(mu,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=exprnd(0.5,100000,1);hist(x,50);
10.gamrnd()
生成服从 Gamma 分布的随机数。Gamma 分布有两个参数:A 和 B。
生成 Gamma 分布随机数的语法是:
gamrnd(A,B,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=gamrnd(3,5,100000,1);hist(x,50);
11.lognrnd()
生成服从对数正态分布的随机数。其有两个参数:mu 和 sigma,服从这个这样的随机数取对数后就服从均值为 mu,标准差为 sigma 的正态分布。
生成对数正态分布随机数的语法是:
lognrnd(mu,sigma,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=lognrnd(-1,1/1.2,100000,1);hist(x,50);
12.raylrnd()
生成服从瑞利(Rayleigh)分布的随机数。其分布有 1 个参数:B。
生成瑞利分布随机数的语法是:
raylrnd(B,[M,N,P,...])
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=raylrnd(2,100000,1);hist(x,50);
13.wblrnd()
生成服从威布尔(Weibull)分布的随机数。其分布有 2 个参数:scale 参数 A 和 shape 参数 B。
生成 Weibull 分布随机数的语法是:
wblrnd(A,B,[M,N,P,...])
还有非中心卡方分布(ncx2rnd),非中心F分布(ncfrnd),非中心t分布(nctrnd),括号中是生成服从这些分布的函数,具体用法用:help 函数名 的方法查找。
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=wblrnd(3,2,100000,1);hist(x,50);
c. 离散型分布随机数
离散分布的随机数可能的取值是离散的,一般是整数。
14.unidrnd()
此函数生成服从离散均匀分布的随机数。Unifrnd 是在某个区间内均匀选取实数(可为小数或整数),Unidrnd 是均匀选取整数随机数。离散均匀分布随机数有 1 个参数:n, 表示从 {1, 2, 3, ... N} 这 n 个整数中以相同的概率抽样。基本语法:
unidrnd(n,[M,N,P,...])
这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的参数为 (10,0.3) 的二项分布
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=unidrnd(9,100000,1);hist(x,9);
可见,每个整数的取值可能性基本相同。
15.binornd()
此函数生成服从二项分布的随机数。二项分布有 2 个参数:n, p。考虑一个打靶的例子,每枪命中率为 p,共射击 N 枪,那么一共击中的次数就服从参数为(N,p)的二项分布。注意 p 要小于等于1 且非负,N 要为整数。基本语法:
binornd(n,p,[M,N,P,...])
生成的随机数服从参数为 (N,p) 的二项分布,这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的参数为 (10,0.3) 的二项分布
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=binornd(10,0.45,100000,1);hist(x,11);
我们可以将此直方图解释为,假设每枪射击命中率为 0.45,每论射击 10 次,共进行 10 万轮,这个图就表示这 10 万轮每轮命中成绩可能的一种情况。
16.geornd()
此函数生成服从几何分布的随机数。几何分布的参数只有一个:p。几何分布的现实意义可以解释为,打靶命中率为 p,不断地打靶,直到第一次命中目标时没有击中次数之和。注意 p 是概率,所以要小于等于1且非负。基本语法:
geornd(p,[M,N,P,...])
这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的参数为(0.4)的二项分布
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=geornd(0.4,100000,1);hist(x,50);
17.poissrnd()
此函数生成服从泊松 (Poisson) 分布的随机数。泊松分布的参数只有一个:lambda。此参数要大于零。基本语法:
geornd(p,[M,N,P,...])
这些随机数排列成 M*N*P... 多维向量。如果只写 M,则生成 M*M 矩阵;如果参数为 [M,N] 可以省略掉方括号。例如:
%注:上述语句生成的随机数所服从的参数为(2)的泊松分布
通过下面代码,可以生成大量随机数,查看大致的分布情况:
x=poissrnd(2,100000,1);hist(x,50);
其他离散分布还有超几何分布 (Hyper-geometric, 函数是 hygernd) 等,详细见 Matlab 帮助文档。
本博客文字大多来自博客 MATLAB随机数生成_MALSIS的博客-CSDN博客_matlab生成一个随机数
MATLAB 生成随机数 方法总汇 (各分布配图参考)相关推荐
- 【转】利用matlab生成随机数函数
原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成器 ...
- 生成介于0.95-1的随机数MATLAB,matlab生成随机数函数
matlab生成随机数函数 1. MA TLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数函数 ...
- matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数
如何用matlab生成随机数函数 1. MATLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数 ...
- matlab生成随机数,matlab随机数生成方法
Matlab(mathworks.com) 随机数生成方法 (转自雅虎空间) 第一种方法是用 random 语句,其一般形式为 y = random('分布的英文名',A1,A2,A3,m,n), 表 ...
- 16bit随机数生成matlab,关于matlab生成随机数
一,matlab中生成随机数主要有三个函数:rand, randn,randi 1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数 ...
- matlab生成随机数小结,MATLAB生成随机数总结
1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是 ...
- matlab生成卡方分布,科学网—Matlab 生成随机数大全 - 强幸子的博文
高斯分布随机数生成 randn(a):生成一个a*a的标准高斯(正态)分布的随机阵. randn(a,b)或者randn([a,b]): 生成一个a行b列的标准高斯分布的随机阵. m+sqrt(n)* ...
- MATLAB实现随机数方法合集
1.rand() 生成(0,1)区间上均匀分布的随机数 基本语法:rand([M,N,P-]) 生成排列成MNP*-多维向量的随机数.如果只写M,则生成M*M矩阵:如果参数为[M,N]可以省略方括号. ...
- python生成随机数方法_详解用python生成随机数的几种方法
今天学习了用python生成仿真数据的一些基本方法和技巧,写成博客和大家分享一下. 本篇博客主要讲解如何从给定参数的的正态分布/均匀分布中生成随机数以及如何以给定概率从数字列表抽取某数字或从区间列表的 ...
最新文章
- flutter开发环境搭建
- DLT algorithm needs at least 6 points for pose estimation from 3D-2D point correspondences. (expecte
- MonogoDb学习笔记
- android HttpClient,DefaultHttpClient,AbstractHttpClient之间关系
- STS的安装教程-鹏鹏
- 敏捷转型谁先动:老总,项目经理or团队
- 除了下拉框/下拉联想词优化推广,还可以做那些网络推广?
- Git与SVN版本控制系统
- Unity播放声音的两种方式以及相关遇到的
- Apache2.2整合PHP5.2
- [.NET开发] C#面向服务WebService从入门到精通
- java 生成pdf 分页_java根据模板动态生成PDF实例
- js 直接打开选择文件窗口_【网络爬虫教学】一分钟带你快速寻找JS加密入口(二)...
- [爬虫项目]猫眼电影TOP100
- 1分钟学会小程序几个最有效的运营推广手段
- odbc An unsupported operation was attempted
- 工业交换机的功率和网络管理方法
- mysql数据库中邮箱的属性_MySQL——数据库的操作、属性
- 元宇宙NFT最近最火的项目,该如何选择平台呢
- CF1720A Burenka Plays with Fractions 题解
热门文章
- 云原生训练营课程大纲
- java注解的jar包_Java 注解 Annotation
- Joda-Time常用方法
- 解决移动端Retina屏幕1px边框问题
- 东软医疗冲刺港股背后:国产化先驱多元布局核心产业,持续创新筑起发展护城河
- 软件构造课外笔记:有意义的命名
- sap的清账是什么意思_SAP 清账(总账)
- android dismiss方法,Android编程之DialogFragment源码详解(一)注:对 dismissAllowingStateLoss()理解...
- 【X11vnc】Ubuntu18.04 x11vnc启动失败,报错error opening logfile: /var/log/x11vnc.log
- 《深度探索C++对象模型》:简单对象模型、表格驱动模型、C++对象模型