随机数的产生指令:rand 或 rand()
生成一个在0~1内均匀分布的随机数
rand的运行结果如下:
关于生成的随机数有如下一些基础的指令:
rng() %重置随机数的指令,随机数种子,也叫固定随机数生成器
rand() %生成(0,1)之间的随机数
2*rand() %生成(0,2)之间的随机数
n*rand() %生成(0,n)之间的随机数
randn %生成正态分布的随机数,平均数为0,方差为1
rand(n) %生成一个n维随机数方阵
rand(a,b) %生成一个a行b列的随机数矩阵
randi([min,max]) %i即为integer整数.生成(min,max)之间的随机整数
randi([min,max],a,b) %i即为integer整数。生成(min,max)之间的a行b列的随机整数矩阵
计算机生成随机数的原理
计算机产生的随机数是伪随机数。这里就不得不谈一下计算机生成随机数的原理。
首先需要知道重置随机数的指令:rng()
我们使用rng(1)指令重置随机数后,会发现再运行rand指令后所出的随机数都是一样的:0.417,0。7203…如下:
在上例中,计算机生成的三个随机数分别是0.4170, 0.7203,和 1.1437e-04.其生成随机数的原理是,将上一个生成的随机数作为下一个生成的随机数的输入。
比如f(1)=0.4170,
f(2)为将0.4170作为输入,带入到matlab内部算法中生成的数是 0.7203,
f(3)为将0.7203作为输入,生成的数是1.1437e-04
…
如此往复生成的这一列随机数成为:global list或global stream。
换句话说当你确定了第一个随机数后,其实后面的随机数也都被确定了。因而第一个随机数尤其重要,称为随机种子(random seed).一旦种子确定了,后面的随机数也都被确定了。
rng() %重置matlab的随机数生成器,重置后的起始值还是一开始的初始值,即随机因子又回来了,随机数便不会产生变化. ()里的值是非负整数,如果是小数的话自动舍去小数部分)
这就是为什么,有时候做随机实验时,每次重新启动matlab后,所做的随机实验的结果都是一样的。因为重新启动matlab后,随机因子都会被重启,随机试验的结果就都一致了。
那么MATLAB中,设定一个不会变化且不会重复的随机因子的指令为:rng(‘shuffle’)
shuffle的中文意思为:洗牌。其实是即根据计算机的时间,来设置为随机因子。时间差毫秒之差都能被记录,这就杜绝了新的随机试验与之前的随机实验使用相同数列的可能性。
产生非0~1范围内的随机数
例:
今天的文章Matlab随机数分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/13062.html