关键词不能为空

当前您在: 主页 > 英语 >

matlab随机数生成方法

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 08:13
tags:

-

2021年2月28日发(作者:米卡斯)


Matlab(mathworks.)


随机数生成方法



(转自雅虎空间)



第一种方法是用



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



SI GMA,m)




(生成




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],


方差为



0.1





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


随机数:



R = chi2rnd(V)






R = chi2rnd(V





R = chi2rnd(V















,m)






,m,n)



六.期望为



MU


的指数随机数(即



Exp









随机数)

















1















MU


R = exprnd(MU)





R = exprnd(MU,m)




R = exprnd(MU,m,n)



七.自由度为



V1




V2




F


分布随机数:




R = frnd(V1



V2)





R = frnd(V1




V2,m)




R = frnd(V1



V2,m,n)



八.



Γ ( A, λ )


随机数:




R = gamrnd



A,lam bda





R = gamrnd



A,lamb da,m)




R = gamrnd



A,lambda,m,n)



九.超几何分布随机数:




R = hygernd(N,K,M)





R = hygernd(N,K,M,m)




R = hygernd(N,K,M,m,n)



十.对数正态分布随机数




R = lognrnd(MU



SIGMA)




R = lognrnd(MU


,< /p>


SIGMA,m)




R = lognrnd(MU



SIGMA,m,n)



十一.负二项随机数:




R = nbinrnd(r


,p)





R = nbinrnd(r


,p,m)





R = nbinrnd(r


,p,m,n)



十二.


Poisson


随机数:




R = poissrnd(lambda)




R = poissrnd(lambda,m)




R = poissrnd(lambda,m,n)




例如,以下



3


种表达有相同的含义:


lambda = 2;




R = poissrnd(lambda,1,10)


(或



R = poissrnd(lambda,[1 10])






R = poissrnd(lambda(ones(1,10)))



十三.


Rayleigh


随机数:




R = raylrnd(B)





R = raylrnd(B,m)





R = raylrnd(B,m,n)



十四.


V


个自由度的



t


分布的随机数:




R = trnd(V)





R = trnd(V


,m)





R = trnd(V


,m,n)



















42


十五.离散的均匀随机数:



R = unidrnd(N)




R = unidrnd(N,m)




R = unidrnd(N,m,n)



十六.


[A,B]


上均匀随机数



R = unifrnd(A,B)




R = unifrnd(A,B,m)




R = unifrnd(A,B,m,n)


例如



unifrnd(0,1:6)




unifrnd(0,1:6,[1 6])


都依次生成


[0,1]


< p>
[0,6]


的6个均匀随机数.


:



十七.


Weibull


随机数



R = weibrnd(A,B)




R = weibrnd(A,B,m)




R = weibrnd(A,B,m,n)





Matlab


随机数



小结



1



rand


生成均匀分布的伪随机数。分布在(


0~1


)之间

< p>



语法:


rand( m,n)


生成


m


n


列的均匀分布的伪随机数



rand(m,n,'double')


生成指定精度的均匀分布的伪随机数,参数还可 以是


'single'


rand (RandStream,m,n)


利用指定的


RandStr eam


生成伪随机数




2



randn

生成标准正态分布的伪随机数(均值为


0


,方差为


1





主要语法:和上面一样




3, randi


生成均匀分布的伪随机整数



< /p>


主要语法:


randi



iMax


)在开区间


[1


,< /p>


iMax]


上生成均匀分布的伪随机整数



randi


iMax



m


< br>n


)在开区间


[1


< p>
iMax]


生成


mXn


型 随机矩阵



r = randi( [iMin,iMax],m,n)


在开区间


[iMin



iMax]


生成


m Xn


型随机矩阵





以上


3


个函数都是根据标准伪随机数发生器的部状态产生的


,


所以如 果把发生器设置为初


始状态,会得到相同的随机数,但如果改变了状态,得到的结果就是 不同的;而在


matlab


打开时,发生器复位到初始状态,所 以用上面


3


个函数得到的结果将是一样的



如我的


matlab


在打开时输入 以下命令将得到相同的随机数:



>> randn(3)


ans =


0.6100 0.8121 -0.5684


1.5087 0.8981 0.8650


-2.3648 -1.5273 3.5761


>> randn(3)


ans =


2.4877 0.6106 -0.9775


-1.6521 -0.9656 -0.6312


3.1855 0.6096 1.5465


>> randn(3)


ans =


1.0479 -1.5038 0.1789


1.9614 0.8838 1.7860


0.8081 1.4729 0.3238




如果想将发生器复位到一个固定状态,可以使用如下命令



randn('seed',0);


randn(3)



以上两条命令将总是得到一样的随机数。




上述命令已经在


7.7


以后摒弃了


(但仍可继续用)



7.7


以后可以使用


randstream

< p>
函数,


如下



reset(aultStream)




一般情况下,随机数都是从默认随机数流中得到数据的,而可以创建自己的数据流对象,


并可以从自己的数据流对象中得到随机数,详见


randstream< /p>


函数。





如果希望


matlab


在不同程序段产生不同的随机数据,可以将默认数据流设置为基于时钟


的,方法为



aultStream ...


(RandStream('mt19937ar','seed',sum(100*clock))); < /p>


normrnd


是自己可以指定均数和标准差的正态分布。




另外,


Mat lab


随机数生成函数主要包括:



betarnd


贝塔分布的随机数生成器



binornd


二项分布的随机数生成器




chi2rnd


卡方分布的随机数生成器



exprnd


指数分布的随机数生成器



frnd f


分布的随机数生成器



gamrnd


伽玛分布的随机数生成器



geornd


几何分布的随机数生成器



hygernd


超几何分布的随机数生成器



lognrnd


对数正态分布的随机数生成器



nbinrnd


负二项分布的随机数生成器



ncfrnd


非中心


f


分布的随机数生成器



nctrnd


非中心


t


分布的随机数生成器



ncx2rnd


非中心卡方分布的随机数生成器



normrnd


正态(高斯)分布的随机数生成器



poissrnd


泊松分布的随机数生成器



raylrnd


瑞利分布的随机数生成器



trnd


学生氏


t

< br>分布的随机数生成器



unidrnd


离散均匀分布的随机数生成器



unifrnd


连续均匀分布的随机数生成器



weibrnd


威布尔分布的随机数生成器





matlab


全部的随机数函数



(一)

< p>
Matlab


部函数



a.



基本随机数



Matlab

< p>
中有两个最基本生成随机数的函数。



1



rand()



生成 (


0,1


)区间上均匀分布的随机变量。基本语法:

< p>


rand([M,N,P ...])


生成排列成


M*N*P...


多维向 量的随机数。


如果只写


M


< p>
则生成


M*M


矩阵;


如果 参数为


[M,N]


可以省略掉方括号。一些例子:



rand(5,1) %


生成

5


个随机数排列的列向量,一般用这种格式



rand(5) %


生成


5

< p>


5


列的随机数矩阵



rand([5,4]) %


生成一个


5



4


列的随机数矩阵



生成的随机数大致的分布。



x=rand(64,1);


hist(x,30);


由此可以看到生成的随机数很符合均匀分布。


(

视频教程会略提及


hist()


函数的作用


)


2



randn()



生成服从标准正态分布(均值为


0


,方差为


1


)的随机数。基本语法和


rand()


类似。



randn([M,N,P ...])


生成排列成


M*N*P...


多维向 量的随机数。


如果只写


M


< p>
则生成


M*M


矩阵;


如果 参数为


[M,N]


可以省略掉方括号。一些例子:



randn(5,1) %


生成

< br>5


个随机数排列的列向量,一般用这种格式



randn(5) %


生成


5



5


列的随机数矩阵



randn([5,4]) %


生成一个


5



4


列的随机数矩阵



生成的随机数大致的分布。



x=randn(100000,1);


hist(x,50);


由图可以看到生成的随机数很符合标准正态分布。



b.



连续型分布随机数



如果你安装了统计工具箱(


Statistic Toolbo x)


,除了这两种基本分布外,还可以用


Matlab



函数生成符合下面这些分布的随机数。



3



unifrnd()

< br>



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


列的随机数矩阵

< p>


unifrnd(-2,3,[5,4]) %


生成一个


5



4


列的随机数矩阵



%


注:上述语句生 成的随机数都在


(-2,3)


区间


.


生成的随机数大致的分布。



x=unifrnd(-2,3,100000,1);


hist(x,50);


由图可以看到生成的随机数很符合区 间


(-2,3)


上面的均匀分布。


< /p>


4



normrnd()




randn()


类似,此 函数生成指定均值、标准差的正态分布的随机数。基本语法



normrnd(mu,sigma,[M,N,P,...])

生成的随机数服从均值为


mu


,标准差为

< br>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]) %< /p>


生成一个


5



4


列的随机数矩阵



%

< br>注:上述语句生成的随机数所服从的正态分布都是均值为


2


,标准差为


3.


生成的随机数大致的分布。



x=normrnd(2,3,100000,1);


hist(x,50);



< /p>


如图,上半部分是由上一行语句生成的均值为


2

< br>,标准差为


3



10

< p>
万个随机数的大致分布,


下半部分是用小节


“ra ndn()”


中最后那段语句生成


10


万个标准正态分布随机数的大致分布。



注意到上半个图像的对 称轴向正方向偏移(准确说移动到


x=2


处),这是由于均值为


2



结果。



而且,由于标准差是


3


,比标准正态分 布的标准差(


1


)要高,所以上半部分图形更胖


(


注意


x


轴刻度的不同


)




5

< p>


chi2rnd()



此函数生成服从卡方(


Chi-square)


分布的随机数。卡方分布只有一个参数:自由度


v


。基 本


语法



chi2rnd(v,[M,N,P,...])


生成的随机 数服从自由度为


v


的卡方分布,这些随机数排列成


M*N*P...


多维向量。如果只


< p>
M


,则生成


M*M


矩阵; 如果参数为


[M,N]


可以省略掉方括号。一些例子:



chi2rnd(5,5,1) %


生成


5


个随机数排列的列向量,一般用这种格式



chi2rnd(5,5) %


生成


5



5


列的随机数矩阵

< br>


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

< br>矩阵;如果参数为


[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 Distrib ution


,这里


Student


不是 学生的意思,而是


Cosset.W.S.


的笔名


)


分布的随机数。


t


分布有


1


个参数:自由度


v

< br>。基本语法



trnd(v,[M,N,P,...])


生成的随机数服从参数为


v



t


分布,


这些随机数排列成

M*N*P...


多维向量。


如果只写

< br>M



则生成


M*M


矩阵;如果参数为


[M,N]


可以省略掉方括号。一 些例子:



trnd(7,5,1) %


生成


5


个随机数排列的列向量,一般用这种格式



trnd(7,5) %


生成

5



5


列的随机数矩阵

< p>


trnd(7,[5,4]) %


生成一个


5



4


列的随机数 矩阵



%


注:上述语句生成的随机数所 服从的参数为


(v=7)



t


分布



生成的随机数大致的分布。



x=trnd(7,100000,1);


hist(x,50);


可以发现


t


分布比标准正太分布要



< p>


,不过随着自由度


v


的 增大,


t


分布会逐渐变胖,当


自由度为 正无穷时,它就变成标准正态分布了。



接下来的分布相对没有 这么常用,


同时这些函数的语法和前面函数语法相同,


所以写得 就简


略一些


——


在视频中也不会讲述,


你只需按照前面那几个分布的语法套用即可,


应该不会有


任何困难


——


时间足够的话这是一个不错的练 习机会。



8



betarnd()



此函数生成服从


Beta


分布的随机数。


Beta


分 布有两个参数分别是


A



B

< p>
。下图是


A=2,B=5


beta


分布的


PDF


图形。




生成


bet a


分布随机数的语法是:



betarnd(A,B,[M,N,P,...])


9



exprnd()



此函数生成服从指数分布的随机数。指数分布只有一个参数


: mu,


下图是


mu=3


时指数分布< /p>



PDF


图形




生成指数分布随机数的语法是:



betarnd(mu,[M,N,P,...])


10



gamrnd()


生成服从


Gamma


分布的随机数。


Gamma


分布有两个参数:


A


和< /p>


B



下图是


A= 2,B=5 Gamma


分布的


PDF


图形




生成


Gamma


分布随机数的语法是:



gamrnd(A,B,[M,N,P,...])


11



lognrnd()


< br>生成服从对数正态分布的随机数。其有两个参数:


mu



sigma


,服从这个这样的随机数取


对数后就服从均值为


mu


,标准差为


s igma


的正态分布。下图是


mu=-1, sigma=1/ 1.2


的对数


正态分布的


PDF


图形。




生成对数正态分布随机数的语法是:



lognrnd(mu,sigma,[M,N,P,...])

12



raylrnd()



生成服从瑞利(


Rayleigh


)分布的 随机数。其分布有


1


个参数:


B


。下图是


B=2


的瑞利分布

< br>的


PDF


图形。



生成瑞利分布随机数的语法是:



raylrnd(B,[M,N,P,...])

-


-


-


-


-


-


-


-



本文更新与2021-02-28 08:13,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679799.html

matlab随机数生成方法的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文