随机数的生成在算法编程中非常常用,在matlab中rand(random的缩写)家族经常被使用。
小白一枚,敬请大神指教
rand家族成员
- randMatrix = rand(x, y)
- randMatrix = randn(x, y)
- randMatrix = randi(x, y)
- randMatrix = randperm(x, y)
- rng 使用方法
rand
随机生成一组数,数值范围在[0, 1]之间,所生成的随机值服从随机分布。
rand(x) or rand(x, y)
rand(x) :这种形式的写法默认随机生成维度为x的方阵。
>> randMatrix = rand(3)
randMatrix =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
rand(x, y):这种形式的写法随机生成行数为x,列数为y的矩阵。
>> randMatrix = rand(2,3)
randMatrix =
0.9649 0.9706 0.4854
0.1576 0.9572 0.8003
randn
该函数生成服从标准正态分布的随机数。
randn(x) or randn(x, y)
randn(x): 生成标准正态分布的随机数方阵,大小为:-x- by -x-
>> randMatrix = randn(3)
randMatrix =
-0.2050 1.4090 -1.2075
-0.1241 1.4172 0.7172
1.4897 0.6715 1.6302
randn(x, y) :生成服从标准正态分布的随机数矩阵。大小为:-x- by -y-
>> randMatrix = randn(2,3)
randMatrix =
0.4889 0.7269 0.2939
1.0347 -0.3034 -0.7873
randi
该函数也具有常用的两种形式:randi(x) or randi(x, y).使用方法和上述的rand和randn一样。
randperm
该函数功能是生成一组整数,并将顺序随机打乱。这种打乱顺序,完全随机,并不服从什么分布。
例1:
>> randperm(5)
ans =
2 4 5 3 1
randperm(5), 表示生成从1到5的五个为整数,并随机打乱顺序。
例2:
>> randperm(10, 3)
ans =
4 6 5
randperm(10, 3),表示生成从1到10的10整数,将顺序随机打乱,并将前三个整数返回。
探索篇——rng 使用方法
在一些随机生成参数的神经网络算法中,将某一次预测结果较高的随机参数在下一次随机生成中进行使用时,rng函数算是一种方式。它可以将上一次随机生成的随机数,进行保存,并在下一次随机生成时进行调用,使得前后两次随机生成的随机数相同。
>> randNum = rng;
>> rand_1 = rand(3)
rand_1 =
0.2238 0.5060 0.9593
0.7513 0.6991 0.5472
0.2551 0.8909 0.1386
>> rng(randNum);
>> rnad_2 = rand(3)
rnad_2 =
0.2238 0.5060 0.9593
0.7513 0.6991 0.5472
0.2551 0.8909 0.1386
rng 函数在使用时,还可以指定随机生成的类型(rand, randi,randn)。