matlab随机数生成(全部函数)

matlab随机数生成(全部函数)
matlab随机数生成(全部函数)

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);

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。

生成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(https://www.360docs.net/doc/5413902759.html,) 随机数生成方法: 第一种方法是用 random 语句,其一般形式为 y = random('分布的英文名',A1,A2,A3,m,n), 表示生成 m 行 n 列的 m × n 个参数为 ( A1 , A2 , A3 ) 的该分布的随机数。例如: (1) R = random('Normal',0,1,2,4): 生成期望为 0,标准差为 1 的(2 行 4 列)2× 4 个正态随机数 (2) R = random('Poisson',1:6,1,6): 依次生成参数为 1 到 6 的(1 行 6 列)6 个 Poisson 随机数 第二种方法是针对特殊的分布的语句: 一.几何分布随机数(下面的 P,m 都可以是矩阵) R = geornd(P) (生成参数为 P 的几何随机数) R = geornd(P,m) (生成参数为 P 的× m 个几何随机数) 1 R = geornd(P,m,n) (生成参数为 P 的 m 行 n 列的 m × n 个几何随机数) 例如 (1) R = geornd(1./ 2.^(1:6)) ( 生成参数依次为 1/2,1/2^2,到 1/2^6 的 6 个几何随机数) (2) R = geornd(0.01,[1 5]) (生成参数为 0.01 的(1行5列)5 个几何随机数). 二.Beta 分布随机数 R = betarnd(A,B) (生成参数为 A,B 的 Beta 随机数) R = betarnd(A,B,m) (生成× m 个数为 A,B 的 Beta 随机数) 1 R = betarnd(A,B,m,n) (生成 m 行 n 列的 m × n 个数为 A,B 的 Beta 随机数). 三.正态随机数 R = normrnd(MU,SIGMA) (生成均值为 MU,标准差为 SIGMA 的正态随机数)R = normrnd(MU,SIGMA,m) (生成 1× m 个正态随机数) R = normrnd(MU,SIGMA,m,n) (生成 m 行 n 列的 m × n 个正态随机数)例如 (1) R = normrnd(0,1,[1 5]) 生成 5 个正态(0,1) 随机数 (2) R = normrnd([1 2 3;4 5 6],0.1,2,3) 生成期望依次为[1,2,3;4,5,6], 方

概率特性仿真实验与程序-Matlab仿真-随机数生成-负指数分布-k阶爱尔兰分布-超指数分布

概率特性仿真实验与程序-Matlab 仿真-随机数生成-负指数分布-k 阶 爱尔兰分布-超指数分布 使用Java 中的SecureRandom .nextDouble()生成一个0~1之间的随机浮点数,然后使用反函数法生成一个符合指数分布的随机变量(反函数求得为λ) 1ln(R x --=)。指数分布的 参数λ为getExpRandomValue 函数中的参数lambda 。生成一个指数分布的随机变量的代码如下,后面都将基于该函数生成一组负指数分布、K 阶爱尔兰分布、2阶超指数分布随机变量,然后将生成的随机数通过matlab 程序进行仿真,对随机数的分布特性进行验证。 生成一组参数为lambda (λ)的负指数分布的随机变量 通过下面的函数生成一组λ参数为lambda 的随机变量,其中size 表示随机变量的个数。通过该函数生成之后,可以将这些随机值保存在文件中,以备分析和验证,比如保存在exp.txt 文件中,供下面介绍的matlab 程序分析。 通过genExp (1000000, 0.2)生成1000000个参数为0.2的随机变量,然后保存到exp.txt 中,然后使用下面的matlab 程序对这些随机数的性质进行验证,如果这些随机数符合λ=0.2的负指数分布,则其均值应为1/λ,即1/0.2=5,其方差应为1/λ2=1/(0.2*0.2)=25。然后对这些随机数的概率分布进行统计分析,以长度为1的区间为统计单位,统计各区间内随机数出现的频数,求出在各区间的概率,绘制图形,与参数为λ的真实负指数分布曲线进行对比。下图为matlab 代码

如下图所示,均值为4.996423,约等于5,方差为24.96761,约等于25,与实际情况相符。此外,通过matlab统计的概率密度函数曲线与真实曲线基本重合(其中在0-1之间没有重合的原因是,实际情况是在0-1之间有无数个点,而matlab统计时以1为一个区间进行统计,只生成了一个统计项,而这无数个点的概率全部加到1点处,因此两条线没有重合,而且1点处的值远大于实际值,如果统计单位划分越细,0-1之间的拟合度更高),表明生成的随机数符合负指数分布。

MatLAB 随机数

常见分布函数表

Matlab中产生正态分布随机数的函数normrnd 功能:生成服从正态分布的随机数 语法: R=normrnd(MU,SIGMA) R=normrnd(MU,SIGMA,m) R=normrnd(MU,SIGMA,m,n) 说明: R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,DELTA参数代表标准差)的随机数。输入的向量或矩阵MU和SIGMA必须形式相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。 R=norrmrnd(MU,SIGMA,m):生成服从正态分布(MU参数代表均值,DELTA参数代表标准差)的随机数矩阵,矩阵的形式由m定义。m是一个1×2向量,其中的两个元素分别代表返回值R中行与列的维数。 R=normrnd(MU,SIGMA,m,n):生成m×n形式的正态分布的随机数矩阵。

>> help normrnd NORMRND Random arrays from the normal distribution. R = NORMRND(MU,SIGMA) returns an array of random numbers chosen from a normal distribution with mean MU and standard deviation SIGMA. The size of R is the common size of MU and SIGMA if both are arrays. If either parameter is a scalar, the size of R is the size of the other parameter. R = NORMRND(MU,SIGMA,M,N,...) or R = NORMRND(MU,SIGMA,[M,N,...]) returns an M-by-N-by-... array. 例:生成正态分布随机数。 >> a=normrnd(0,1) a = -1.4814

Matlab 各种随机数设置

Matlab 各种随机数设置 randn(伪随机正态分布数) Normally distributed pseudorandom numbers Syntax r = randn(n) randn(m,n) randn([m,n]) randn(m,n,p,...) randn([m,n,p,...]) randn(size(A)) r = randn(..., 'double') r = randn(..., 'single') Description r = randn(n) returns an n-by-n matrix containing pseudorandom values drawn from the standard normal distribution. randn(m,n) or randn([m,n]) returns an m-by-n matrix. randn(m,n,p,...) or randn([m,n,p,...]) returns an m-by-n-by-p-by-... array. randn returns a scalar. randn(size(A)) returns an array the same size as A. r = randn(..., 'double') or r = randn(..., 'single') returns an array of normal values of the specified class. Note The size inputs m, n, p, ... should be nonnegative integers. Negative integers are treated as 0. The sequence of numbers produced by randn is determined by the internal state of the uniform pseudorandom number generator that underlies rand, randi, and randn. randn uses one or more uniform values from that default stream to generate each normal value. Control the default stream using its properties and methods. Note In versions of MATLAB prior to 7.7 (R2008b), you controlled the internal state of the random number stream used by randn by calling randn directly with the 'seed' or 'state' keywords. Examples Generate values from a normal distribution with mean 1 and standard deviation 2. r = 1 + 2.*randn(100,1); Generate values from a bivariate normal distribution with specified mean vector and covariance matrix. mu = [1 2]; Sigma = [1 .5; .5 2]; R = chol(Sigma); z = repmat(mu,100,1) + randn(100,2)*R; Replace the default stream at MATLAB startup, using a stream whose seed is based on clock, so that randn will return different values in different MATLAB sessions. It is usually not desirable to do this more than once per MATLAB session. RandStream.setDefaultStream ...

MATLAB产生各种分布的随机数

M A T L A B产生各种分布 的随机数 The final revision was on November 23, 2020

MATLAB产生各种分布的随机数 1,均匀分布U(a,b): 产生m*n阶[a,b]均匀分布U(a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b) 2,0-1分布U(0,1) 产生m*n阶[0,1]均匀分布的随机数矩阵:rand (m, n) 产生一个[0,1]均匀分布的随机数:rand 4,二类分布binornd(N,P,mm,nn)如binornd(10,,mm,nn) 即产生mm*nn均值为N*P的矩阵 binornd(N,p)则产生一个。而binornd(10,,mm)则产生mm*mm的方阵,军阵为N*p。 5,产生m*n阶离散均匀分布的随机数矩阵: unidrnd(N,mm,nn)产生一个数值在1-N区间的mm*nn矩阵 6,产生mm nn阶期望值为的指数分布的随机数矩阵: exprnd( ,mm, nn) 此外,常用逆累积分布函数表 函数名调用格式函数注释 norminv X=norminv(P,mu,sigma) 正态逆累积分布函数 expinv X=expinv(P,mu) 指数逆累积分布函数 weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数 logninv X=logninv(P,mu,sigma) 对数正态逆累积分布函数

Chi2inv X=chi2inv(P,A,B) 卡方逆累积分布函数 Betainv X=betainv(P,A,B) β分布逆累积分布函数 随机数的产生 4.1.1 二项分布的随机数据的产生 命令参数为N,P的二项随机数据 函数 binornd 格式 R = binornd(N,P) %N、P为二项分布的两个参数,返回服从参数为N、P的二项分布的随机数,N、P大小相同。 R = binornd(N,P,m) %m指定随机数的个数,与R同维数。 R = binornd(N,P,m,n) %m,n分别表示R的行数和列数 例4-1 >> R=binornd(10, R = 3 >> R=binornd(10,,1,6) R = 8 1 3 7 6 4 >> R=binornd(10,,[1,10]) R = 6 8 4 6 7 5 3 5 6 2 >> R=binornd(10,,[2,3]) R = 7 5 8 6 5 6 >>n = 10:10:60; >>r1 = binornd(n,1./n) r1 = 2 1 0 1 1 2 >>r2 = binornd(n,1./n,[1 6]) r2 = 0 1 2 1 3 1 4.1.2 正态分布的随机数据的产生

matlab中产生随机数的程序

1.由U(0,1)分布的随机数产生U(a,b)的随机数 r=rand(1,20); s=a+(b-a)*r; 例: r=rand(1,20); s=2+(10-2)*r s = Columns 1 through 11 7.0589 2.7803 4.2280 6.3751 9.6601 9.7191 3.2609 9.7647 9.6573 5.8830 8.4022 Columns 12 through 20 3.1351 5.3741 9.3259 8.3377 9.6759 7.2459 2.2857 8.7930 9.4719 2.指数分布的抽样 (6.9)n=10的时候 u=rand(1,19); r=1; for i=1:19 r=r*u(i); end s=log(r); m=1; for j=11:19 if(u(j-1)>u(j)) y(m)=u(j) else y(m)=u(j) end m=m+1; end for k=2:9 x(k)=(y(k-1)-y(k))*s end x y = 0.4168

0.4168 0.6569 y = 0.4168 0.6569 0.6280 y = 0.4168 0.6569 0.6280 0.2920 y = 0.4168 0.6569 0.6280 0.2920 0.4317 y = 0.4168 0.6569 0.6280 0.2920 0.4317 0.0155 y = 0.4168 0.6569 0.6280 0.2920 0.4317 0.0155 0.9841 y = 0.4168 0.6569 0.6280 0.2920 0.4317 0.0155 0.9841 0.1672

MATLAB随机数生成

2009年03月20日星期五 03:25 P.M. rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n 的随机数矩阵 (现成的函数) 另外: Matlab随机数生成函数 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器 nctrnd 非中心t分布的随机数生成器 ncx2rnd 非中心卡方分布的随机数生成器 normrnd 正态(高斯)分布的随机数生成器 poissrnd 泊松分布的随机数生成器 raylrnd 瑞利分布的随机数生成器 trnd 学生氏t分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 weibrnd 威布尔分布的随机数生成器 (From:https://www.360docs.net/doc/5413902759.html,/question/30033707.html) matlab生成随机数据 matlab本身提供很多的函数来生成各种各样的随机数据: normrnd 可以生成一定均值和标准差的正态分布 gamrnd 可以生成gamma分布的伪随机数矩阵 chi2rnd 可以生成卡方分布的伪随机数矩阵 trnd 可以生成t分布的伪随机数矩阵 frnd 可以生成f分布的伪随机数矩阵 raylrnd 可以生成rayleigh分布的伪随机数矩阵

matlab产生随机数的方法

matlab 产生随机数的方法 第一种方法是用 random 语句,其一般形式为 y = random (' 分布的英文名 ',A1,A2,A3,m,n ) , 表示生成m 行n 列的m x n 个参数为(A1 , A2 , A3 ) 的该分 布的随机数。 例如: (1) R = random ('Normal',0,1,2,4): 生成期 望为 0, 标准差为 1 的(2 行 4 列)2 x 4个正态随机数 (2) R = random ('Poisson',1:6,1,6): 依次 生成参数为 1 到 6 的(1 行 6 列 )6 个 Poisson 随机数 第二种方法是针对特殊的分布的语句: 一. 几何分布随机数 R = geornd(P) R = geornd(P,m) (下面的 P , m 都可以是矩阵) (生成参数为 P 的几何随机数) (生成参数为 P 的 x m 个几何随机数) 1 R = geornd (P,m,n ) (生成参数为 P 的 m 行 n 列的 m x n 个几何随 机数) 例如 ⑴ R = geornd (1./ 2八(1:6))(生成参数依次为 1/2,1/2A 2,至U 1/2A 6 的 6 个几 何随机数 ) ⑵ R = geornd (0.01,[1 5])( 生成参数为0.01的(1行5列)5个几何随 机数). 二. Beta 分布随机数 R = betarnd(A,B) R = betarnd(A,B,m) 生成 m 行 n 列的 m x n 个数为 A,B 的 Beta 随 三.正态随机数 R = normrnd (MU, SIGMA ) (生成均值为 MU,标准差为SIGMA 的正态随机数) R = normrnd (MU , SIGMA,m ) (生成 1x m 个正态随机数) R = normrnd(MU , SIGMA,m,n) (生成 m 行 n 列的 m x n 个正态随机数) 例如 (1) R = normrnd(0,1,[1 5]) 生成 5 个正态 (0,1) 随机数 (2) R = normrnd([1 2 3;4 5 6],0.1,2,3) 生成期望依次为 [1,2,3;4,5,6], 方 差为 0.1 的 2x 3 个正态随机数. 生成参数为 A,B 的 Beta (生成 x m 个数为 A,B 随机数) 的 Beta 随机数) R = betarnd(A,B,m,n) 机数) .

matlab随机数生成方法

Matlab 随机数生成方法(转自雅虎空间) 第一种方法是用random 语句,其一般形式为 y = random('分布的英文名',A1,A2,A3,m,n), 表示生成m 行n 列的m × n 个参数为( A1 , A2 , A3 ) 的该分布的随机数。例如: (1) R = random('Normal',0,1,2,4): 生成期望为0,标准差为1 的(2 行4 列)2× 4 个正态随机数 (2) R = random('Poisson',1:6,1,6):依次生成参数为1 到6 的(1 行6 列)6 个Poisson 随机数 第二种方法是针对特殊的分布的语句: 一.几何分布随机数(下面的P,m 都可以是矩阵) R = geornd(P) (生成参数为P 的几何随机数) R = geornd(P,m)(生成参数为P 的× m 个几何随机数) 1 R = geornd(P,m,n)(生成参数为P 的m 行n 列的m × n 个几何随机数) 例如 (1)R = geornd(1./ 2.^(1:6)) ( 生成参数依次为1/2,1/2^2,到1/2^6 的6 个几何随机数) (2)R = geornd,[1 5]) (生成参数为的(1行5列)5 个几何随机数). 二.Beta 分布随机数 R = betarnd(A,B)(生成参数为A,B 的Beta 随机数) R = betarnd(A,B,m)(生成× m 个数为A,B 的Beta 随机数) 1 R = betarnd(A,B,m,n)(生成m 行n 列的m × n 个数为A,B 的Beta 随机数). 三.正态随机数 R = normrnd(MU,SIGMA)(生成均值为MU,标准差为SIGMA 的正态随机数) R = normrnd(MU,SIGMA,m)(生成1× m 个正态随机数) R = normrnd(MU,SIGMA,m,n) (生成m 行n 列的m × n 个正态随机数) 例如 (1) R = normrnd(0,1,[1 5]) 生成5 个正态(0,1) 随机数 (2) R = normrnd([1 2 3;4 5 6],,2,3)生成期望依次为[1,2,3;4,5,6], 方差为的2× 3 个正态随机数. 四.二项随机数:类似地有 R = binornd(N,P)R = binornd(N,P,m) R = binornd(N,p,m,n) 例如 n = 10:10:60; r1 = binornd(n,1./n)或r2 = binornd(n,1./n,[1 6]) (都生成参数分别为1 1 ), L, ( 60, ) 的6个二项随机数. (10, 10 60 五.自由度为V 的χ 2 随机数:

matlab随机数生成(全部函数)

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]可以省略掉方括号。一些例子:

matlab随机数生成方法

Matlab(https://www.360docs.net/doc/5413902759.html,) 随机数生成方法 第一种方法是用random 语句,其一般形式为 y = random('分布的英文名',A1,A2,A3,m,n), 表示生成m 行n 列的m × n 个参数为( A1 , A2 , A3 ) 的该分布的随机数。例如: (1) R = random('Normal',0,1,2,4): 生成期望为0,标准差为1 的(2 行4 列)2× 4 个正态随机数 (2) R = random('Poisson',1:6,1,6):依次生成参数为1 到6 的(1 行6 列)6 个Poisson 随机数 第二种方法是针对特殊的分布的语句: 一.几何分布随机数(下面的P,m 都可以是矩阵) R = geornd(P) (生成参数为P 的几何随机数) R = geornd(P,m)(生成参数为P 的× m 个几何随机数) R = geornd(P,m,n)(生成参数为P 的m 行n 列的m × n 个几何随机数) 例如 (1)R = geornd(1./ 2.^(1:6)) ( 生成参数依次为1/2,1/2^2,到1/2^6 的6 个几何随机数) (2)R = geornd(0.01,[1 5]) (生成参数为0.01 的(1行5列)5 个几何随机数). 二.Beta 分布随机数 R = betarnd(A,B)(生成参数为A,B 的Beta 随机数) R = betarnd(A,B,m)(生成× m 个数为A,B 的Beta 随机数) R = betarnd(A,B,m,n)(生成m 行n 列的m × n 个数为A,B 的Beta 随机数). 三.正态随机数 R = normrnd(MU,SIGMA)(生成均值为MU,标准差为SIGMA 的正态随机数) R = normrnd(MU,SIGMA,m)(生成1× m 个正态随机数) R = normrnd(MU,SIGMA,m,n) (生成m 行n 列的m × n 个正态随机数) 例如

生成高斯分布的matlab程序

clear all; close all; clc; randn('seed',0); %%一维高斯函数 mu=0; sigma=1; x=-6:0.1:6; y=normpdf(x,mu,sigma); plot(x,y); figure; %%二维或多维高斯函数 mu=[00]; sigma=[0.30;00.35]; [x y]=meshgrid(linspace(-8,8,80)',linspace(-8,8,80)'); X=[x(:) y(:)]; z=mvnpdf(X,mu,sigma); surf(x,y,reshape(z,80,80)); hold on; %再生成一个 mu=[40]; sigma=[1.20;0 1.85]; [x y]=meshgrid(linspace(-8,8,80)',linspace(-8,8,80)'); X=[x(:) y(:)]; z=mvnpdf(X,mu,sigma); surf(x,y,reshape(z,80,80)); Matlab 的随机函数(高斯分布均匀分布其它分布) Matlab中随机数生成器主要有: betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器

Matlab随机数产生的问题

Matlab随机数产生的问题 2009-02-13 08:13 这2天发现这个问题讨论较多,所以就搜索了一些资料。发现自己之前的理解有些很有问题,同时欢迎大家继续讨论。先澄清一下几个容易弄错的地方(也不一定全对) (1)用计算机产生的是“伪随机数”。用投色子计数的方法产生真正的随机数 , 但电脑若也这样做 , 将会占用大量内存 ; 用噪声发生器或放射性物质也可产生真正的随机数 , 但不可重复 . 而用数学方法产生最适合计算机 , 这就是周期有限 , 易重复的” 伪随机数” (2)随机数的产生需要有一个随机的种子,因为用计算机产生的随机数是通过递推的方法得来的,必须有一个初始值。 (3)用同一台电脑,且在初始值和递推方法相同的情况下,可以产生相同的随机序列(由于以前每次使用randn或者rand得到都是不同值,所以曾经误以为相同的seed无法产生相同的序列) [size=2][color=red][b]一 matlab里产生随机数的方法[/b][/color][/size] matlab里和随机数有关的函数: (1) rand:产生均值为0.5、幅度在0~1之间的伪随机数 (2) randn:产生均值为0、方差为1的高斯白噪声 (3) randperm(n):产生1到n的均匀分布随机序列 (4) normrnd(a,b,c,d):产生均值为a、方差为b大小为cXd的随机矩阵 还有很多的扩展函数,不再一一列出。不过他们都调用的是rand或者randn函数,由此可见在matlab里rand和randn是产生随机数的关键所在。看来只有看他们的源文件了 function [varargout] = randn(varargin) %%%help 文档的内容略去%%% if nargout == 0 builtin('randn', varargin{:}); else [varargout{1:nargout}] = builtin('randn', varargin{:}); end 从这里也看不出到底是怎么产生的,就只看到builtin。而builtin函数的源文件是这样的: %BUILTIN Execute built-in function from overloaded method. % BUILTIN is used in methods that overload built-in functions to execute % the original built-in function. If F is a string containing the name % of a built-in function then BUILTIN(F,x1,...,xn) evaluates that % function at the given arguments. % % BUILTIN(...) is the same as FEVAL(...) except that it will call the % original built-in version of the function even if an overloaded one % exists (for this to work, you must never overload BUILTIN). % % [y1,..,yn] = BUILTIN(F,x1,...,xn) returns multiple output arguments. %

关于matlab生成随机数

一,matlab中生成随机数主要有三个函数:rand, randn,randi 1,rand 生成均匀分布的伪随机数。分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single' rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪随机数 2,randn 生成标准正态分布的伪随机数(均值为0,方差为1) 主要语法:和上面一样 3, randi 生成均匀分布的伪随机整数 主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数 randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵 r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵示例验证: 均值分布 概率分布图: y=rand(1,3000000); hist(y,2000); 散点图: y=rand(1,3000000); plot(y)

正态分布 概率分布图: y=randn(1,3000000); hist(y,2000); 散点图:

y=randn(1,3000000); plot(y); 二,关于随机种子,伪随机数的重复生成 正常情况下每次调用相同指令例如rand生成的伪随机数是不同的,例如: rand(1,3) rand(1,3) matlab的输出为: ans = 0.139043482536049 0.734007633362635 0.194791464843949 ans = 0.602204766324215 0.937923745019422 0.149285414707192 如何使两个语句生成的随机数相等呢? Matlab帮助中的下面章节有所叙述: Managing the Default Stream 管理默认(缺省)流

MATLAB常用的基本数学函数

一、MATLAB常用的基本数学函数abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数(Signum function)。 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1。 rem(x,y):求x除以y的馀数 gcd(x,y):整数x和y的最大公因数 lcm(x,y):整数x和y的最小公倍数 exp(x):自然指数 pow2(x):2的指数 log(x):以e为底的对数,即自然对数或 log2(x):以2为底的对数 log10(x):以10为底的对数 二、MATLAB常用的三角函数sin(x):正弦函数 cos(x):馀弦函数 tan(x):正切函数 asin(x):反正弦函数 acos(x):反馀弦函数 atan(x):反正切函数 atan2(x,y):四象限的反正切函数

sinh(x):超越正弦函数cosh(x)

:超越馀弦函数 tanh(x):超越正切函数 asinh(x):反超越正弦函数 acosh(x):反超越馀弦函数 atanh(x):反超越正切函数 三、适用於向量的常用函数有:min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值 mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位数 std(x): 向量x的元素的标准差 diff(x): 向量x的相邻元素的差 sort(x): 对向量x的元素进行排序(Sorting) length(x): 向量x的元素个数 norm(x): 向量x的欧氏(Euclidean)长度 sum(x): 向量x的元素总和 prod(x): 向量x的元素总乘积 cumsum(x): 向量x的累计元素总和 cumprod(x): 向量x的累计元素总乘积 dot(x, y): 向量x和y的内积 cross(x, y): 向量x和y的外积 四、MATLAB的永久常数i或j:基本虚数单位(即) eps:系统的浮点(Floating-point)精确度 inf:无限大,例如1/0 nan或NaN:非数值(Not a number),例如0/0 pi:圆周率 p(= 3.1415926...) realmax:系统所能表示的最大数值 realmin:系统所能表示的最小数值 nargin: 函数的输入引数个数 nargin: 函数的输出引数个数

MATLAB伪随机数发生器

MATLAB伪随机数发生器.txt生活是过出来的,不是想出来的。放得下的是曾经,放不下的是记忆。无论我在哪里,我离你都只有一转身的距离。 均匀性较好的随机数生成 zz from https://www.360docs.net/doc/5413902759.html,/lanmuyd.asp?id=3379 随机数生成算法[1]是一类重要的算法,广泛应用于仿真技术等场合。然而,目前的伪随机数生成器(Pseudo-random number generator, PRNG)[2]存在一个重要缺陷,即样本分布与真实分布不一致,这主要发生在以下两种情况:①抽样代价过高,样本数目较少;②空间维数较高[3]。 因此,有必要寻找一类新的随机数发生器。准随机数发生器(Quasi-random number generator,QRNG)[4]能够生成稳定、低差异性的(low-discrepancy)样本,而与样本数目或空间维数无关[5]。故针对蒙特卡罗积分结果不稳定的情况,提出一种基于QRNG的蒙特卡罗积分,发现比传统方法性能有所提升。 伪随机数介绍 伪随机数是由确定的算法生成的,其分布函数与相关性均能通过统计测试。与真实随机数的差别在于,它们是由算法产生的,而不是一个真实的随机过程。一般地,伪随机数的生成方法主要有以下3种[6]: (1)直接法(Direct Method),根据分布函数的物理意义生成。缺点是仅适用于某些具有特殊分布的随机数,如二项式分布、泊松分布。 (2)逆转法(Inversion Method),假设U服从[0,1]区间上的均匀分布,令X=F-1(U),则X的累计分布函数(CDF)为F。该方法原理简单、编程方便、适用性广。 (3)接受拒绝法(Acceptance-Rejection Method):假设希望生成的随机数的概率密度函数(PDF)为f,则首先找到一个PDF为g的随机数发生器与常数c,使得f(x)≤cg(x),然后根据接收拒绝算法求解。由于算法平均运算c次才能得到一个希望生成的随机数,因此c的取值必须尽可能小。显然,该算法的缺点是较难确定g与c。 因此,伪随机数生成器(PRNG)一般采用逆转法,其基础是均匀分布,均匀分布PRNG 的优劣决定了整个随机数体系的优劣[7]。下文研究均匀分布的PRNG。 伪随机数生成器的缺点 重复做N=10000次试验,每次产生S=20与S=100个随机分布的样本,同时采用Kolmogorov- Smirnov假设检验(hypothesis test)来确定样本是否满足均匀分布。规定: ① 0假设(null hypothesis)为样本服从均匀分布;② 1假设(alternative hypothesis)为样本不服从均匀分布。 采用P值(∈[0, 1])衡量,P值越趋近于0,表示越有理由拒绝0假设,即样本不服从均匀分布;P值越趋近于1,表示越有理由接受0假设,即样本服从均匀分布。 如图1与图2所示:随着P值下降,样本也越来越不服从均匀分布。实践中希望P值越大越好。然而统计学的结论显示,P值一定服从均匀分布,与N、S大小无关,这表明由于随机性,总会出现某次抽样得到的样本不服从、甚至远离均匀分布。另外,样本大小的不同,造成检验标准的不同,直观上看S=100对应的均匀分布普遍比S=20对应的更均匀。因此,小样本情况下均匀分布PRNG的差异性尤为严重。

matlab 中的随机函数

Matlab中的几个随机函数 -randperm,sort,rand,randint Matlab自带函数randperm(n)产生1到n的整数的无重复的随机排列,利用它就可以得到无重复的随机数。 function p = randperm(n); %RANDPERM Random permutation. % RANDPERM(n) is a random permutation of the integers from 1 to n. % For example, RANDPERM(6) might be [2 4 5 6 1 3]. % % Note that RANDPERM calls RAND and therefore changes RAND's state. % % See also PERMUTE. % Copyright 1984-2002 The MathWorks, Inc. % $Revision: 5.10 $ $Date: 2002/04/09 00:26:14 $ [ignore,p] = sort(rand(1,n)); 原理:

1. rand(1, n)产生1行n列的0-1之内的随机数矩阵。 2. sort()把这个矩阵排序,返回的ignore是排序后的序列,p是排序后的序列的各数原来的索引,这个索引肯定是随机的,而且是在1到n 间无重复的整数。 附:《Matlab中的几个随机函数》 rand rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 randint randint(m,n,[1 N]):生成m×n的在1到N之间的随机整数矩阵,其效果与randint(m,n,N+1)相同。 >> randint(3,4,[1 10]) ans = 5 7 4 10 5 1 2 7 8 7 8 6 >> randint(3,4,11)

MATLAB产生各种分布的随机数

MATLAB产生各种分布的随机数 1,均匀分布U( a,b): 产生m*n 阶[a,b]均匀分布U (a,b)的随机数矩阵:unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:unifrnd (a,b) 2,0-1 分布U( 0,1) 产生m*n 阶[0,1]均匀分布的随机数矩阵:rand (m, n) 产生一个[0,1]均匀分布的随机数:rand 4,二类分布binornd(N,P,mm,nn) 如binornd(10,0.5,mm,nn) 即产生mm*nn 均值为N*P 的矩阵 binornd(N,p) 则产生一个。而binornd(10,0.5,mm) 则产生mm*mm 的方阵,军阵为N*p 。5,产生m*n 阶离散均匀分布的随机数矩阵: unidrnd(N,mm,nn) 产生一个数值在1-N 区间的mm*nn 矩阵 6,产生mm nn阶期望值为的指数分布的随机数矩阵:exprnd ( ,mm, nn) 此外,常用逆累积分布函数表 函数名调用格式函数注释 normin X=norminv(P,mu,sigma) 正态逆累积分布函数 v 指数逆累积分布函数 expinv X=expinv(P,mu) weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数 对数正态逆累积分布函数 logninv X=logninv(P,mu,sigma) 卡方逆累积分布函数 Chi2inv X=chi2inv(P,A,B) Betainv X=betainv(P,A,B) β分布逆累积分布函数

4.1 随机数的产生 4.1.1 二项分布的随机数据的产生 命令参数为N,P 的二项随机数据 函数binornd 格式R = binornd(N,P) %N 、P为二项分布的两个参数,返回服从参数为项 N、P的二分布的随机数,N、P 大小相同。 R = binornd(N,P,m) %m 指定随机数的个数,与R 同维数。 R = binornd(N,P,m,n) %m,n 分别表示R 的行数和列数 例4-1 >> R=binornd(10,0.5) R = 3 >> R=binornd(10,0.5,1,6) R = 8 1 3 7 6 4 >> R=binornd(10,0.5,[1,10]) R = 6 8 4 6 7 5 3 5 6 2 >> R=binornd(10,0.5,[2,3]) R = 7 5 8 6 5 6 >>n = 10:10:60; >>r1 = binornd(n,1./n)

相关文档
最新文档