admin管理员组文章数量:1597400
2024年5月23日发(作者:)
一、matlab中的rand函数(用于产生随机数)
均匀分布的随机数或矩阵
语法
Y = rand(n)
Y = rand(m,n)
Y = rand([m n])
Y = rand(m,n,p,...)
Y = rand([m ])
Y = rand(size(A))
rand
s = rand('state')
描述
rand函数产生由在(0, 1)之间均匀分布的随机数组成的数组。
Y = rand(n) 返回一个n x n的随机矩阵。如果n不是数量,则返回错误信息。
Y = rand(m,n) 或 Y = rand([m n]) 返回一个m x n的随机矩阵。
Y = rand(m,n,p,...) 或 Y = rand([m ]) 产生随机数组。
Y = rand(size(A)) 返回一个和A有相同尺寸的随机矩阵。
1,rand(3)*-2 rand(3)是一个3*3的随机矩阵(数值范围在0~1之间)
然后就是每个数乘上-2
2 ,用matlab随机产生60个1到365之间的正数 1+fix(365*rand(1,
60));
3,用rand函数随机取100个从-1到1的数x1,x2,...,x = rand(1,100) * 2
– 1
二、使用中应该注意的问题:
rand产生的是0到1(不包括1)的随机数.
matlab的rand函数生的是伪随机数,即由种子递推出来的,相同的种子,生成相同
的随机数.
matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都
是相同的.
1.多次运行,生成相同的随机数方法:
用rand('state',S)设定种子
S为35阶向量,最简单的设为0就好
例:
rand('state',0);rand(10)
2. 任何生成相同的随机数方法:
试着产生和时间相关的随机数,种子与当前时间有关.
rand('state',sum(100*clock))
即:
rand('state',sum(100*clock)) ;rand(10)
只要执行rand('state',sum(100*clock)) ;的当前计算机时间不现,生成的随机值就不
现.
也就是如果时间相同,生成的随机数还是会相同.
在你计算机速度足够快的情况下,试运行一下:
rand('state',sum(100*clock));A=rand(5,5);rand('state',sum(100*clock));B=rand(5,5);
A和B是相同.
所以建议再增加一个随机变量,变成:
rand('state',sum(100*clock)*rand(1));
.
有兴趣的可以查阅
Petr Savicky
Institute of Computer Science
Academy of Sciences of CR
Czech Republic
savicky@
September 16, 2006
Abstract
The default random number generator in Matlab versions between 5 and at least
7.3 (R2006b) has a strong dependence between the numbers zi+1, zi+16, zi+28 in the
generated sequence. In particular, there is no index i such that the inequalities
zi+1 < 1/4, 1/4 zi+16 < 1/2, and 1/2 zi+28 are satisfied simultaneously. This
fact is proved as a consequence of the recurrence relation defining the generator. A
random sequence satisfies the inequalities with probability 1/32. Another example
demonstrating the dependence is a simple function f with values −1 and 1, such that
the correlation between f(zi+1, zi+16) and sign(zi+28 − 1/2) is at least 0.416, while it
should be zero.
A simple distribution on three variables that closely approximates the joint
distribution of zi+1, zi+16, zi+28 is described. The region of zero density in the
approximating distribution has volume 4/21 in the three dimensional unit cube. For
every integer 1 k 10, there is a parallelepiped with edges 1/2k+1, 1/2k and 1/2k+1,
where the density of the distribution is 2k. Numerical simulation confirms that the
distribution of the original generator matches the approximation within small random
error corresponding to the sample size.
版权声明:本文标题:matlab中rand函数的用法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1716401555a501542.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论