matlabseed函数_如何⽤matlab⽣成随机数函数_matlab随机
数⽣成函数
如何⽤matlab⽣成随机数函数
1. MATLAB 函数 rand
产⽣在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间。⼀个称为seed的值则是⽤来控制产⽣随机数的次数。均匀随机数函数的语法为rand(n),rand(m,n),其结果分别产⽣⼀矩阵含n×n个随机数和⼀矩阵含m×n的随机数。注意每次产⽣随机数的值都不会⼀样,这些值代表的是随机且不可预期的,这正是我们⽤随机数的⽬的。我们可利⽤这些随机数代⼊算式中,来表⽰某段讯号的不规则振幅或是某个事件出现的机率。均匀随机数其值平均的分布于⼀区间的特性可以从其统计密度函数(probabilitydensity function, PDF)说明。从其PDF分布类似长条图的分布,可以看出其每⼀个随机数值出现的机率皆相同,所以它被称为均匀随机数。
见以下的例⼦:
>> rand(1,6) % 第⼀次使⽤随机数产⽣器
ans =
0.2190 0.0470 0.6789 0.6793 0.9347 0.3835
>>hist(ans) % 看看长条图的长相
>>plot(ans) % ⽐较上个图与这个图有何差异?何者能代表不规则数据的分布
>> rand(1,6) % 第⼆次使⽤随机数产⽣器,注意每次产⽣的随机数值皆不同
ans =
0.5194 0.8310 0.0346 0.0535 0.5297 0.6711
因为每次随机数产⽣的值皆不同,如果因为验证算式需要确定所使⽤的随机数值是相同的,可以利⽤seed这个选项,⽤以设定使⽤计算随机数产⽣器的起始值,其语法为rand(‘seed’,n),n的规定是。其中n=0有特别意义是使⽤第⼀次产⽣随机数值的起始值
(=931316785),其它的n值即是所使⽤起始值。如果使⽤相同的起始值,则随机数值会⼀样,因为随机数的计算是依据起始值。请看以下的例⼦:
>> rand(‘seed’,0) % 将随机数值的起始值重设,相当于是第⼀次产⽣随机数值
>>rand(‘seed’) % 显⽰现在使⽤的 seed 值=931316785
ans =
931316785
>> rand(2,3) % 注意随机数值的上下限介于 [0,1] 区间
ans =
0.2190 0.6789 0.9347
0.0470 0.6793 0.3835
>> rand(‘seed’) % 显⽰再产⽣随机数值所⽤的seed=412659990
ans =
412659990
>> rand(‘seed’,0)
>> rand(1,6)
ans =
0.2190 0.0470 0.6789 0.6793 0.9347 0.3835
>> rand(‘seed’,100) % 设定随机数值的起始值=100
>> rand(‘seed’)
ans =
100
>> rand(2,5)
ans =
0.2909 0.0395 0.3671 0.5968 0.9253
0.0484 0.5046 0.9235 0.8085 0.3628
如果需要产⽣随机数值不是介于[0,1]区间,可以采⽤以下步骤将随机数值从[0,1]区间转换到其它区间。假设要得到⼀组随机数值是介于[2,4]区间,我们先产⽣⼀组随机数介于[0,1]区间 ,再将其值乘以2,因为2等于区间上下限的差值(4-2)。接著再加上下限值(2),即可得到随机数值是介于[2,4]区间。例如区间为[a,b],a为下限值,b为上限值。则算式如下
x=(b-a)*r + a,
其中x代表转换后的随机数值的阵列。请看下列⽰范:
>>data_1 = 2*rand(1,500)+2; %原随机数值有500个
>>plot(data_1) %这个图是否看来眼熟?
>>axis([1 500 0 6]) %调整横轴/纵轴上下限
>>hist(data_1) %看看其长条图
2. MATLAB 函数randn
产⽣常态随机数,它是以⾼斯分布在随机数出现的上下限区间。常态随机数其值分布于⼀区间的特性
可以从其统计密度函数(PDF)说明。从其 PDF分布可以看出其每⼀个随机数值出现的机率皆不相同,靠近中间的随机数值出现的机率⽐起两端的值要⾼,这是⼀般不规则现象较可能出现的情形,所以它被称为常态随机数。由于常态随机数并⾮以上下限来定义,它是⽤数据的平均值和⽅差定义之。因此在产⽣⼀常态随机数时,需设定平均值和⽅差的⼤⼩。randn(n)和randn(n,m)是分别产⽣⼀矩阵含n×n个随机数和⼀矩阵含m×n的常态随机数,其平均值为0⽅差为1。
见以下的例⼦:
>> x=-2.9:0.2:2.9; % 这个例⼦⽤到 hist 函数来画出⼆种随机数的分布图
>> y=randn(1,5000);
>> hist(y,x)
>> title(‘Histogram of Normal Random Data’)
>> y1=rand(1,5000);
>> hist(y1,x)
>> title(‘Histogram of Uniform Random Data’)
如果需要产⽣常态随机数值的平均值和⽅差并⾮0和1,可以采⽤以下步骤将平均值和⽅差做转换。假设要得到⼀组常态随机数值的平均值为b和⽅差为a,我们先产⽣⼀组随机数r,再将其值乘以⽅差a。接著再加平均值b。算式如下:
x=a*r + b
其中x代表转换后的随机数值的阵列。请看下列⽰范:
>>data_2 = randn(1,500)+3 %原随机数值有500个
>>plot(data_2) %这个图是否看来眼熟?
>>axis([1 500 0 6])
>>hist(data_2) %看看其长条图
3.randperm(n)
产⽣⼀个1到n之间⾃然数的随机排列
4.randint(m,n,[1 N])
⽣成m×n的在1到N之间的随机整数矩阵,其效果与randint(m,n,N+1)相同。
matlab⽣成随机数函数
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 离散均匀分布的随机数⽣成器
matlab生成随机数
unifrnd 连续均匀分布的随机数⽣成器
weibrnd 威布尔分布的随机数⽣成器
喜欢 (1)or分享 (0)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论