Matlab随机数

随机数的产生指令: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范围内的随机数

例:
在这里插入图片描述

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华毓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值