1. rand(m,n) 生成m行n列均匀分布在(0~1)之间的伪随机数。
rand(1,5)
ans =
0.8147 0.9058 0.1270 0.9134 0.6324
● 若想得到一个3*3的方阵,则输入rand(3)即可。
>> rand(3)
ans =
0.6852 0.0274 0.5587
0.2045 0.6705 0.1404
0.8781 0.4173 0.1981
● rand(size(A)) 返回一个和A有相同尺寸的随机矩阵。例如我们随便输入一个A矩阵,然后输入这个语句之后即可得到相同行列的一个随机矩阵。
>> A = [1,2;3,4]
A =
1 2
3 4
>> rand(size(A))
ans =
0.3456 0.5388
0.3968 0.4192
2. randn (m,n) 生成m行n列标准正态分布的伪随机数(均值为0,方差为1)
randn(1,5)
ans =
-1.3077 -0.4336 0.3426 3.5784 2.7694
3. randi 生成均匀分布的伪随机整数
randi(iMax),在 [1,iMax] 生成均匀分布的伪随机整数
randi(5)
ans =
3
randi(iMax,m,n),在 [1,iMax] 上生成 m * n 型随机矩阵
randi(5,1,5)
ans =
5 1 3 5 4
randi([iMin,iMax],m,n) ,在 [iMin,iMax] 生成 m * n 型随机矩阵
randi([2,5],2,5)
ans =
5 2 5 5 3
4 5 4 4 4
4. 重复生成前一次的随机数
我们可以使用rng来保存上一次生成随机数的状态,也就是常说的随机数种子seed
s = rng; % 保存a的随机数seed
a = randn(1,5)
k = rng; % 保存b的随机数seed
b = randn(1,5)
rng(s) % 调用a的随机数seed
a_t = randn(1,5)
rng(k) % 调用b的随机数seed
b_t = randn(1,5)
结果如下:
a =
-2.9443 1.4384 0.3252 -0.7549 1.3703
b =
-1.7115 -0.1022 -0.2414 0.3192 0.3129
a_t =
-2.9443 1.4384 0.3252 -0.7549 1.3703
b_t =
-1.7115 -0.1022 -0.2414 0.3192 0.3129
也可以使用下面这种方法来循环生成同样的随机数
rng(seed)中的seed可以自行选取不同的数值,以此来控制不同的随机数状态
for i = 1:5
rng(1)
x = randn(1,5)
end
结果如下:
x =
-0.6490 1.1812 -0.7585 -1.1096 -0.8456
x =
-0.6490 1.1812 -0.7585 -1.1096 -0.8456
x =
-0.6490 1.1812 -0.7585 -1.1096 -0.8456
x =
-0.6490 1.1812 -0.7585 -1.1096 -0.8456
x =
-0.6490 1.1812 -0.7585 -1.1096 -0.8456
可以看到生成的随机数都是一样的。