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

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-26

    在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*...数组。

     

第2个回答  2012-11-09
刚好搜到这个问题,解答者很耐心,也很全面,应该是将matlab中的这个函数帮助文档翻译过来,英语水平不错,呵呵。只是个人觉得还是有些不清楚,我看了好几遍还是不怎么理解,没办法值得自己再去实验,终于得出一些结论,自己作了笔记,花了时间和精力,也在这里分享一下吧,希望对大家有用。
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)。
第3个回答  推荐于2017-09-11
函数功能:
生成(连续)均匀分布的随机数

使用方法:
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)呢,什么情况下可以这么用呢

本回答被提问者采纳
相似回答