matlab中unifrnd函数用法
unifrnd可以创建随机的连续均匀分布的数组。
1、R = unifrnd(A,B)
A和B可以是向量也可以是标量,若两个都是向量,则两者都是列向量或都是行向量,而且维数相等。
从A到B产生一系列区间,若A和B均为向量,则区间个数等于他们的维数;若其中恰有一个是向量,假设A为向量,则区间个数等于A的维数;若两个均为标量,则A <= B,区间个数为1,且区间为[A,B]。然后在这一系列区间中随机产生连续均匀分布的数组R并返回之。
具体例子下述。
例1.
执行指令
>> x = [1:9];
>> y = [2:10];
>> unifrnd(x,y)
得到
ans =
1.9595 2.6557 3.0357 4.8491 5.9340 6.6787 7.7577 8.7431 9.3922
从x到y产生区间[1,2],[2,3],[3,4],[4,5],[5,6],[6,7],[7,8],[8,9],[9.10].然后从每个区间产生一个随机数,得到R。
例2.
执行指令
>> x = [1:3];
>> R1 = unifrnd(x,1);
>> R2 = unifrnd(1,x);
得到
R1 =
1 NaN NaN
R2 =
1.0000 1.2769 1.0923
NaN表示"not a number"即不是数字。
观察语句R1 = unifrnd(x,1);“从x到1”产生区间[1,1],[2,1],[3,1]显然只有第一个区间可以取得“随机数”1,其余区间不符合规定,故而返回NaN。
观察R2 = unifrnd(1,x);从1到x产生区间[1,1],[1,2],[1,3],取得随机数组R2.
2.R = unifrnd(A,B,M,N,...) or R = unifrnd(A,B,[M,N,...])
returns an M-by-N-by-... array.
扩展资料:
MatLab随机数生成函数系列:
rand 均匀分布
randn 正态分布
sprand 均匀分布的稀疏矩阵
sprandn 正态分布的稀疏矩阵
sprandsym 正态分布的对称的稀疏矩阵
randperm 均匀分布的序列
betarnd 贝塔分布
binornd 二项分布
chi2rnd 卡方分布
exprnd 指数分布
frnd f分布
gamrnd 伽玛分布
geornd 几何分布
hygernd 超几何分布
lognrnd 对数正态分布
nbinrnd 负二项分布
ncfrnd 非中心f分布
nctrnd 非中心t分布
ncx2rnd 非中心卡方分布
normrnd 正态(高斯)分布
poissrnd 泊松分布
raylrnd 瑞利分布
trnd 学生氏t分布
unidrnd 离散均匀分布
unifrnd 连续均匀分布
weibrnd 威布尔分布
参考资料:
在matlab中unifrnd函数是生成(连续)均匀分布的随机数
使用方法:
R = unifrnd(A,B)
生成被A和B指定上下端点[A,B]的连续均匀分布的随机数组R。
如果A和B是数组,R(i,j)是生成的被A和B对应元素指定连续均匀分布的随机数。
如果N或P是标量,则被扩展为和另一个输入有相同维数的数组。
R = unifrnd(A,B,m,n,...) 或 R = unifrnd(A,B,[m,n,...])
返回m*n*...数组。
如果A和B是标量,R中所有元素是相同分布产生的随机数。
如果A或B是数组,则必须是m*n*...数组。
unifrnd
Continuous uniform random numbers
在连续均匀分布里面取随机数,得到矩阵。按一定规律取,其值是在均匀分布中随机找,矩阵元素个数及形状面规定的。
Syntax
R = unifrnd(A,B)
R = unifrnd(A,B,m,n,...)
R = unifrnd(A,B,[m,n,...])
Description
R = unifrnd(A,B)returns an array R of random numbers generated from the continuous uniform distributions with lower and upper endpoints specified by A and B, respectively. If A and B are arrays, R(i,j) is generated from the distribution specified by the corresponding elements of A and B. If either A or B is a scalar, it is expanded to the size of the other input.
我的解释:
R = unifrnd(A,B)返回一个矩阵,什么样的一个矩阵呢?首先,矩阵的每个元素都是一定范围的一个连续均匀分布里面的一个随机值,这个连续分布有一个上限一个下限,这就要分多种情况讨论了:
1、若A、B都是单个数字,则函数返回的矩阵是以A为下限B位上限的连续均匀分布中一个随机值(单个元素也可以算一个矩阵)。若是R = unifrnd(A,B,m,n,...)函数形式,则返回各对应尺寸为m,n,...的一个矩阵,其中的每个元素都是以A为下限B为上限的连续均匀分布中一个随机值。
2、若A是数字,B是矩阵。则R = unifrnd(A,B)返回一个与B同型的矩阵。其中的每一个元素这样产生:以A为下限,以B中对应位置的元素为上限产生一个连续均匀分布,在里面随机取一个值即可。同样,对于R = unifrnd(A,B,m,n,...),返回的是一个尺寸为m,n,...的矩阵,那么易知这里暗示B必须能包含这个返回矩阵!
3、若A、B都是矩阵,那么R = unifrnd(A,B)函数也暗示A、B是同型矩阵,返回的也是同型矩阵,每个元素的产生参照前面的,就不用再介绍了。
R = unifrnd(A,B,m,n,...) or R = unifrnd(A,B,[m,n,...]) returns an m-by-n-by-... array. If A and B are scalars, all elements of R are generated from the same distribution. If either A or B is an array, they must be m-by-n-by-... . 如果A、B是常数,那么返回的规定尺寸的矩阵每一个元素都服从同一个连续均匀分布(上下限分别是A、B)。
生成(连续)均匀分布的随机数
使用方法:
R = unifrnd(A,B)
生成被A和B指定上下端点[A,B]的连续均匀分布的随机数组R。
如果A和B是数组,R(i,j)是生成的被A和B对应元素指定连续均匀分布的随机数。
如果N或P是标量,则被扩展为和另一个输入有相同维数的数组。
R = unifrnd(A,B,m,n,...) 或 R = unifrnd(A,B,[m,n,...])
返回m*n*...数组。
如果A和B是标量,R中所有元素是相同分布产生的随机数。
如果A或B是数组,则必须是m*n*...数组。
应用举例 :
a = 0; b = 1:5;
r1 = unifrnd(a,b)
r1 =
0.8147 1.8116 0.3810 3.6535 3.1618
B = repmat(b,5,1);
R = unifrnd(a,B)
R =
0.0975 0.3152 0.4257 2.6230 3.7887
0.2785 1.9412 1.2653 0.1428 3.7157
0.5469 1.9143 2.7472 3.3965 1.9611
0.9575 0.9708 2.3766 3.7360 3.2774
0.9649 1.6006 2.8785 2.7149 0.8559
r2 = unifrnd(a,b(2),1,5)
r2 =
1.4121 0.0637 0.5538 0.0923 0.1943
r2 = unifrnd(a,b(2),1,5)
中的b(2)不应该是b(1,2)吗,为什么可以用b(2)呢,什么情况下可以这么用呢