matlab中rand(),MATLAB中rand()和randn()的用法

MATLAB中有两个基本的(伪)随机数发生函数, rand与randn.

1.  rand()产生0和1之间均匀分布的随机数

1.1 直接输入rand产生一个0和1之间的随机数,

>> rand

ans =

0.7553

>> rand

ans =

0.4009

1.2 rand(m)产生一个m*m的矩阵,当然矩阵的值是0和1之间均匀分布的随机数,

>> rand(4)

ans =

0.2602 0.0760 0.6869 0.5179

0.5191 0.1917 0.5028 0.7428

0.4997 0.1574 0.5523 0.3980

0.9365 0.3902 0.2324 0.2861

1.3 rand(m,n)或者rand([m,n])产生一个m*n的矩阵,

>> rand(2,4)

ans =

0.4023 0.4784 0.4143 0.9494

0.4660 0.7545 0.8291 0.8965

1.4  rand(size(A))返回一个和A相同大小的随机数矩阵,

>> D=ones(3,4)

D =

1 1 1 1

1 1 1 1

1 1 1 1

>> rand(size(D))

ans =

0.5344 0.8003 0.0270 0.7813

0.9378 0.3654 0.8377 0.7265

0.9613 0.1164 0.8151 0.5799

1.5实例,

产生2和5之间的一组随机数序列,

>> A=2;

>> B=5;

>> A + (B-A).*rand(1,6)

ans =

4.8285 3.9580 4.8779 3.0478 4.2555 2.0482

2.  randn()产生均值为0, 方差为1的正态分布的随机数。用法和rand类似。

>> randn

ans =

-0.3697

>> randn(3)

ans =

0.5089 0.5860 -0.5517

0.7978 -0.6301 2.4338

2.3280 -0.3184 0.4719

>> randn(1,6)

ans =

-0.7443 -1.4583 0.2043 -0.9238 -0.8349 0.1101

3.  初始化问题

每次启动MATLAB时rand与randn的初始状态都会被自动重置, 从而会产生完全相同的伪随机序列。为了得到不同的伪随机序列, 可以自行重置随机数发生函数的状态,相应的语句是rand(method, s)和randn(method, s)。

3.1 参数method是一个字符串, 用来指明随机数发生器使用那种算法。

rand的method有三种取值: 'twister', 'state', 'seed', 其中最新的'twister'方法产生的伪随机序列重复周期最长,也是MATLAB 7.4及更高版本的默认方法。

randn中只包括后两种method, 默认方法是'state'。

3.2 参数s设置所选定方法的状态。

可以用rand(method)和randn(method)查看method方法当前的状态(这一命令并不改变随机数发生函数当前使用的算法)。

'seed'方法的状态是一个数, 而'state'与'twister'方法的状态是一个数组.

参数s应该是一个自然数, 它将随机数发生器所选定的方法的状态设置为‘第s个’可能的状态。

有时我们希望每次运行得到的伪随机序列都不一样, 这样看起来更像随机的。rand的帮助文档中给了一个示例方案:rand('twister',sum(100*clock))这一思路是将状态值设置为时变的. clock函数返回反映当前时间的1x6数组[年,月, 日, 时, 分, 秒](注意sum(100*clock)一般不是整数。这个例子似乎不太合乎规范, 但运行起来没问题).。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值