matlab中的rand ,randn,和randi函数

1. rand(m,n) 生成m行n列均匀分布在(0~1)之间的伪随机数。

rand(1,5)

ans =

    0.6797    0.6551    0.1626    0.1190    0.4984

2. randn (m,n) 生成m行n列标准正态分布的伪随机数(均值为0,方差为1)

 randn(1,5)

ans =

    1.5326   -0.7697    0.3714   -0.2256    1.1174

3. randi 生成均匀分布的伪随机整数

Pseudorandom integers from a uniform discrete distribution.
randi(iMax)在 [1,iMax] 生成均匀分布的伪随机整数

randi(5)

ans =

     3

randi(iMax,m,n)在 [1,iMax] 上生成 m X n 型随机矩阵

randi(5,1,5)

ans =

     4     5     5     3     1

randi([iMin,iMax],m,n) ,在 [iMin,iMax] 生成 m X n 型随机矩阵

 randi([2,5],1,5)

ans =

     2     3     5     3     5

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 =
    0.8003   -1.5094    0.8759   -0.2428    0.1668

b =

   -1.9654   -1.2701    1.1752    2.0292   -0.2752

a_t =

    0.8003   -1.5094    0.8759   -0.2428    0.1668

b_t =

   -1.9654   -1.2701    1.1752    2.0292   -0.2752

也可以使用下面这种方法来循环生成同样的随机数
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

可以看到生成的随机数都是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值