打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
4.6.1 均匀乱数

4.6.1 均匀乱数


用 MATLAB 函数 rand产生在区间 [0, 1] 的均匀乱数,它是平均分布在 [0, 1]之间。一个称为 seed的值则是 用来控制产生乱数的次数。均匀乱数函数的语法为rand(n), rand(m,n),其结果分别产生一矩阵含nxn个乱数 和一矩阵含mxn的乱数。注意每次产生乱数的值都不会一样,这些值代表的是随机且不可预期的,这正是 我们用乱数的目的。我们可利用这些乱数代入算式中,来表示某段讯号的不规则振幅或是某个事件出现的 机率。均匀乱数其值平均的分布于一区间的特性可以从其统计密度函数(probability density function, PDF) 说明 。从其PDF分布 类似长条图的分布 可以看出其每一个乱数值出现的机率皆相同,所以它被称为均匀乱数。

见以下的例子:

>> rand(1,6) % 第一次使用乱数产生器

ans =

0.2190 0.0470 0.6789 0.6793 0.9347 0.3835

>>hist(ans) % 看看长条图的长相

>>plot(ans) % 比较上个图与这个图有何差异?何者能代表不规则数据的分布

>> rand(1,6) % 第二次使用乱数产生器,注意每次产生的乱数值皆不同

ans =

0.5194 0.8310 0.0346 0.0535 0.5297 0.6711

因为每次乱数产生的值皆不同,如果因为验证算式需要确定所使用的乱数值是相同的,可以利用seed这个 选项,用以设定使用计算乱数产生器的起始值,其语法为rand('seed',n)n的规定是

。其中n=0有特别意 义是使用第一次产生乱数值的起始值(=931316785),其它的n值即是所使用起始值。如果使用相同的起始 值,则乱数值会一样,因为乱数的计算是依据起始值。请看以下的例子:

>> rand('seed',0) % 将乱数值的起始值重设,相当于是第一次产生乱数值

>>rand('seed') % 显示现在使用的 seed 值=931316785

ans =

931316785

>> rand(2,3) % 注意乱数值的上下限介于 [0,1] 区间

ans =

0.2190 0.6789 0.9347

0.0470 0.6793 0.3835

>> rand('seed') % 显示再产生乱数值所用的seed=412659990

ans =

412659990

>> rand('seed',0)

>> rand(1,6)

ans =

0.2190 0.0470 0.6789 0.6793 0.9347 0.3835

>> rand('seed',100) % 设定乱数值的起始值=100

>> rand('seed')

ans =

100

>> rand(2,5)

ans =

0.2909 0.0395 0.3671 0.5968 0.9253

0.0484 0.5046 0.9235 0.8085 0.3628

如果需要产生乱数值不是介于[0,1]区间,可以采用以下步骤将乱数值从[0,1]区间转换到其它区间。假设要 得到一组乱数值是介于[2,4]区间,我们先产生一组乱数 介于[0,1]区间 ,再将其值乘以2,因为2等于区 间上下限的差值(4-2)。接著再加上下限值 (2),即可得到乱数值是介于[2,4]区间。例如区间为[a,b],a为下 限值,b为上限值。则算式如下

x=(b-a)*r + a,

其中x代表转换后的乱数值的阵列。请看下列示范:

>>data_1 = 2*rand(1,500)+2; %原乱数值有500个

>>plot(data_1) %这个图是否看来眼熟?

>>axis([1 500 0 6]) %调整横轴/纵轴上下限

>>hist(data_1) %看看其长条图

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
rand和srand产生随机数
C++随机数的用法
Vlookup函数实例(全)
Excel数组公式应用彻底醒悟
网上常能见到的一段 JS 随机数生成算法如下,为什么用 9301, 49297, 233280 这三个数字做基数?
C++ 随机数生成
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服