matlab 全部的随机数函数
(一)Matlab内部函数
a. 基本随机数
Matlab中有两个最基本生成随机数的函数。
1.rand()
生成(0,1)区间上均匀分布的随机变量。基本语法:
rand([M,N,P ...])
生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
rand(5,1) %生成5个随机数排列的列向量,一般用这种格式
rand(5) %生成5行5列的随机数矩阵
rand([5,4]) %生成一个5行4列的随机数矩阵
生成的随机数大致的分布。
x=rand(100000,1);
hist(x,30);
由此可以看到生成的随机数很符合均匀分布。(视频教程会略提及hist()函数的作用)
2.randn()
生成服从标准正态分布(均值为0,方差为1)的随机数。基本语法和rand()类似。
randn([M,N,P ...])
生成排列成M*N*P... 多维向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
randn(5,1) %生成5个随机数排列的列向量,一般用这种格式
randn(5) %生成5行5列的随机数矩阵
randn([5,4]) %生成一个5行4列的随机数矩阵
生成的随机数大致的分布。
x=randn(100000,1);
hist(x,50);
由图可以看到生成的随机数很符合标准正态分布。
b. 连续型分布随机数
如果你安装了统计工具箱(Statistic Toolbox),除了这两种基本分布外,还可以用Matlab内部函数生成符合下面这些分布的随机数。
3.unifrnd()
和rand()类似,这个函数生成某个区间内均匀分布的随机数。基本语法
unifrnd(a,b,[M,N,P,...])
生成的随机数区间在(a,b)内,排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
unifrnd(-2,3,5,1) %生成5个随机数排列的列向量,一般用这种格式
unifrnd(-2,3,5) %生成5行5列的随机数矩阵
unifrnd(-2,3,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数都在(-2,3)区间内.
生成的随机数大致的分布。
x=unifrnd(-2,3,100000,1);
hist(x,50);
由图可以看到生成的随机数很符合区间(-2,3)上面的均匀分布。
4.normrnd()
和randn()类似,此函数生成指定均值、标准差的正态分布的随机数。基本语法
normrnd(mu,sigma,[M,N,P,...])
生成的随机数服从均值为mu,标准差为sigma(注意标准差是正数)正态分布,这些随机数排列成M*N*P... 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:
normrnd(2,3,5,1) %生成5个随机数排列的列向量,一般用这种格式
normrnd(2,3,5) %生成5行5列的随机数矩阵
normrnd(2,3,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的正态分布都是均值为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]可以省略掉方括号。一些例子:
chi2rnd(5,5,1) %生成5个随机数排列的列向量,一般用这种格式
chi2rnd(5,5) %生成5行5列的随机数矩阵
chi2rnd(5,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的卡方分布的自由度都是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]可以省略掉方括号。一些例子:
frnd(3,5,5,1) %生成5个随机数排列的列向量,一般用这种格式
frnd(3,5,5) %生成5行5列的随机数矩阵
frnd(3,5,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的参数为(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]可以省略掉方括号。一些例子:
trnd(7,5,1) %生成5个随机数排列的列向量,一般用这种格式
trnd(7,5) %生成5行5列的随机数矩阵
trnd(7,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的参数为(v=7)的t分布
生成的随机数大致的分布。
x=trnd(7,100000,1);
hist(x,50);
可以发现t分布比标准正太分布要“瘦”,不过随着自由度v的增大,t分布会逐渐变胖,当自由度为正无穷时,它就变成标准正态分布了。
接下来的分布相对没有这么常用,同时这些函数的语法和前面函数语法相同,所以写得就简略一些——在视频中也不会讲述,你只需按照前面那几个分布的语法套用即可,应该不会有任何困难——时间足够的话这是一个不错的练习机会。
8.betarnd()
此函数生成服从Beta分布的随机数。Beta分布有两个参数分别是A和B。下图是A=2,B=5 的beta分布的PDF图形。
生成beta分布随机数的语法是:
betarnd(A,B,[M,N,P,...])
9.exprnd()
此函数生成服从指数分布的随机数。指数分布只有一个参数: mu, 下图是mu=3时指数分布的PDF图形
生成指数分布随机数的语法是:
betarnd(mu,[M,N,P,...])
10.gamrnd()
生成服从Gamma分布的随机数。Gamma分布有两个参数:A和B。下图是A=2,B=5 Gamma分布的PDF图形
生成Gamma分布随机数的语法是:
gamrnd(A,B,[M,N,P,...])
11.lognrnd()
生成服从对数正态分布的随机数。其有两个参数:mu和sigma,服从这个这样的随机数取对数后就服从均值为mu,标准差为sigma的正态分布。下图是mu=-1, sigma=1/1.2的对数正态分布的PDF图形。
生成对数正态分布随机数的语法是:
lognrnd(mu,sigma,[M,N,P,...])
12.raylrnd()
生成服从瑞利(Rayleigh)分布的随机数。其分布有1个参数:B。下图是B=2的瑞利分布的PDF图形。
生成瑞利分布随机数的语法是:
raylrnd(B,[M,N,P,...])
13.wblrnd()
生成服从威布尔(Weibull)分布的随机数。其分布有2个参数:scale 参数 A和shape 参数 B。下图是A=3,B=2的Weibull分布的PDF图形。
生成Weibull分布随机数的语法是:
wblrnd(A,B,[M,N,P,...])
还有非中心卡方分布(ncx2rnd),非中心F分布(ncfrnd),非中心t分布(nctrnd),括号中是生成服从这些分布的函数,具体用法用:
help 函数名
查找。
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]可以省略掉方括号。一些例子:
unidrnd(5,5,1) %生成5个随机数排列的列向量,一般用这种格式
unidrnd(5,5) %生成5行5列的随机数矩阵
unidrnd(5,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的参数为(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]可以省略掉方括号。一些例子:
binornd(10,0.3,5,1) %生成5个随机数排列的列向量,一般用这种格式
binornd(10,0.3,5) %生成5行5列的随机数矩阵
binornd(10,0.3,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的参数为(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]可以省略掉方括号。一些例子:
geornd(0.4,5,1) %生成5个随机数排列的列向量,一般用这种格式
geornd(0.4,5) %生成5行5列的随机数矩阵
geornd(0.4,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的参数为(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]可以省略掉方括号。一些例子:
poissrnd(2,5,1) %生成5个随机数排列的列向量,一般用这种格式
poissrnd(2,5) %生成5行5列的随机数矩阵
poissrnd(2,[5,4]) %生成一个5行4列的随机数矩阵
%注:上述语句生成的随机数所服从的参数为(2)的泊松分布
生成的随机数大致的分布。
x=poissrnd(2,100000,1);
hist(x,50);
其他离散分布还有超几何分布(Hyper-geometric, 函数是hygernd)等,详细见Matlab帮助文档。
matlab 全部的随机数函数的更多相关文章
- 【转】利用matlab生成随机数函数
原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成 ...
- js产生随机数函数
函数: //产生随机数函数 function RndNum(n){ var rnd=""; for(var i=0;i<n;i++) rnd+=Math.floor(Math ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- php封装生成随机数函数
随机数函数Random(num,min,max): num:生成的个数 min:最小的数 max:最大的数. <?php //生成随机20个1-80内不重复的随机数 //思路:也没什么思路,就是 ...
- python3随机数函数
随机数函数 choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数. randrange ([start,] stop ...
- MySQL的随机数函数rand()的使用技巧
咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数. 而在mysql里,随机数函数rand不能传参, ...
- python实现类似于Matlab中的magic函数
参考这篇文章的代码封装了一个类似Matlab中的magic函数,用来生成魔方矩阵. #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy ...
- Javascript 随机数函数 学习之二:产生服从正态分布随机数
一.为什么需要服从正态分布的随机函数 一般我们经常使用的随机数函数 Math.random() 产生的是服从均匀分布的随机数,能够模拟等概率出现的情况,例如 扔一个骰子,1到6点的概率应该相等,但现实 ...
随机推荐
- Ubuntu 命令行下快速打开各类文件 分类: ubuntu shell 2014-11-18 20:06 210人阅读 评论(0) 收藏
xdg-open 命令可以用来在Ubuntu下快速打开各类文件. 下面是从 manual 文档里截取的内容: 可以知道,该命令的功能是在图形界面下按照用户的平时习惯打开各类文件,甚至是链接. 这样,我 ...
- docker-compose 工具安装
centos 7 安装 之前测试过相关安装方法 pip python 安装不行 还是用下面这个办法搞定 curl -L https://github.com/docker/compose/releas ...
- [Javascript] Querying an Immutable.js Map()
Learn how to query an Immutable.Map() using get, getIn, has, includes, find, first and last. These a ...
- MySQL 的 read_buffer_size 参数是如何影响写缓冲和写性能的?
Each thread // that does a sequential scan . The value of this variable should be a multiple of 4KB. ...
- agentzh --春哥--调试专家
https://github.com/agentzh/perl-systemtap-toolkit https://github.com/openresty http://openresty.org/ ...
- hadoop文件的序列化
目录 1.为什么要序列化? 2.什么是序列化? 3.为什么不用Java的序列化? 4.为什么序列化对Hadoop很重要? 5.Hadoop中定义哪些序列化相关的接口呢? 6.Hadoop 自定义Wri ...
- Java读取WEB-INF目录下的properties配置文件
如何在Java代码中读取WEB-INF目录下的properties配置文件,下文给出了一个解决方案. 我们习惯将一些配置信息写在配置文件中,比如将数据库的配置信息URL.User和Password写在 ...
- Execution Contexts (执行上下文)
本章我们一起讨论一下ECMAScript的执行上下文及相关可执行代码的各种类型.so...什么是执行上下文?我们来看看定义: 每次当控制器转到ECMAScript可执行代码的时候, 即会进入到一个执行 ...
- [转] Express 4 中的变化
http://www.cnblogs.com/haogj/p/3985438.html 概览 从 Express 3 到Express 4 是一个巨大的变化,这意味着现存的 Express 3 应用在 ...
- cogs 2507 零食店
/* cogs 2507 零食店 跪了这题的数据了.... 第一遍Q*m 暴力询问 嗯 以为能的70 但只有40 Q已经到了1e6了 考试的时候 放弃了第三题又打了一遍 这次是Q*(n+logn) 最 ...