来源 matble中help rand
其实都知道rand('twister',5489),就是重置matble随机生成数编译器,使在不同方法(算法)下有相同的初始化,同时又可以保证实验结果可以复现。
下面结合matble中的help rand来具体,rand函数 默认是生成(0,1)之间随机数的函数
rand()函数的具体形式有如下几种:
X = rand 返回一个随机数,该随机数在(0,1)之间
X = rand(n) 返回一个nXn的矩阵,矩阵中的每个元素值都是(0,1)之间的随机数
X = rand(sz1,...,szN)
例如rand(2,3),返回的是2X3的随机矩阵,矩阵元素为(0,1)之间随机数;
- rand(2,3,2)则表示返回两个列表,分别是(2,3,1),(2,3,2), 每个列表都是2X3的随机矩阵,
- 矩阵元素为(0,1)之间随机数;……
X = rand(sz) sz表示向量,当sz为一个数是 等价于 rand(n);……
X = rand(___,typename) 返回数据类型为TypeName 的随机数(0,1)数组,
TypeName输入可以是“single”或“double”。
可以使用以前的语法中的任何输入参数类型。
X = rand(___,'like',p) 返回像p这样数据类型的随机数(0,1)数组,即与p具有相同对象类型的数组。
可以指定typeName或“like”,但不能同时使用typyname与like。
下面通过实例来具体说明
>> rand(3)
ans =
0.2769 0.8235 0.9502
0.0462 0.6948 0.0344
0.0971 0.3171 0.4387
>> rand(2,3)
ans =
0.3816 0.7952 0.4898
0.7655 0.1869 0.4456
randi()可以设定产生随机数的区间
>> r = randi([10 50],1,5)
r =
43 47 15 47 35
产生随机复数
>> a = rand + 1i*rand
a =
0.6551 + 0.1626i
重置随机数生成器,保存随机数生成器的当前状态,并创建1乘5的随机数向量。 (始终使用rng函数(而不是rand或randn函数)来指定随机数产生器的设置)
>> s = rng;
r = rand(1,5)
r =
0.1190 0.4984 0.9597 0.3404 0.5853
>> rng(s);
r1 = rand(1,5)
r1 =
0.1190 0.4984 0.9597 0.3404 0.5853
三维随机数组Create a 3-by-2-by-3 array of random numbers.
>> X = rand([3,2,3])
X(:,:,1) =
0.2238 0.5060
0.7513 0.6991
0.2551 0.8909
X(:,:,2) =
0.9593 0.1493
0.5472 0.2575
0.1386 0.8407
X(:,:,3) =
0.2543 0.9293
0.8143 0.3500
0.2435 0.1966
X = rand(___,typename) 的使用
>> r = rand(1,4,'single')
r =
0.2511 0.6160 0.4733 0.3517
查看上面r矩阵的数据类型使用class()函数 ///其实也可以用whos语句查询,不过whos查的是当前所有包含数据的类型,包含r
>> class(r)
ans =
single
X = rand(___,'like',p)
>> p = single([3 2; -2 1])
p =
3 2
-2 1
矩阵p为single类型
>> X = rand(2,3,'like',p)
X =
0.4505 0.2290 0.1524
0.0838 0.9133 0.8258
>> Y = rand(3,'like',p)
Y =
0.5383 0.4427 0.0046
0.9961 0.1067 0.7749
0.0782 0.9619 0.8173
>> Z=randi([1,10],2,3,'like',p)
Z =
9 4 9
1 3 5
>> class(X)
ans =
single
>> class(Y)
ans =
single
>> class(Z)
ans =
single