1:rand函数的用法
命令:rand(N),rand(M,N)等
对于rand(N),通过help rand得到的解释是:R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution on the open interval(0,1).
即rand(N)是生成一个符合标准均匀分布的矩阵,其值位于开区间0~1。
由概率论知识可知,当一个序列服从(0,1)区间的标准均匀分布时,其期望为0.5,方差为1/12(0.08333)。
可以用程序检验一下:

a=rand(1,10);
b=rand(1,1000);
c=rand(1,100000);
mean(a)
ans =0.5890
mean(b)
ans =0.4900
mean(c)
ans =0.5000
var(a)
ans =0.0634
var(b)
ans =0.0834
var(c)
ans =0.0833

可见,随着数据长度的增加,rand函数生成的数据期望越来越接近0.5,方差越来越接近1/12。
若想生成在区间[a,b]服从标准均匀分布的序列时,可用公式:r=a+(b-a).*rand(M,N),如下例:

%%在区间[10,100]服从标准均匀分布,其期望为55,方差为90^2/12=675
r=10+90.*rand(1,100000);
mean(r)
ans =54.9954
var(r)
ans =673.8957

2:randi函数的用法
命令:randi(IMAX,N),randi(IMAX,M,N),randi(IMAX,[M,N]),randi([IMIN,IMAX],…)等
对于randi(N),通过help randi得到的解释是:
R = randi(IMAX,N) returns an N-by-N matrix containing pseudorandom integer values drawn from the discrete uniform distribution on 1:IMAX.
R = randi([IMIN,IMAX],…) returns an array containing integer values drawn from the discrete uniform distribution on IMIN:IMAX
即randi生成1:IMAX或者IMIN:IMAX之间的离散均匀分布的整数矩阵。如:

r1=randi(10,2,5)%生成数据在1:10之间的2*5矩阵r1 =7     1     3     7     56     6    10     5     1>> r2=randi([10,100],2,5)%生成数据在10:100之间的2*5矩阵r2 =93    49    51    89    6353    95    98    36    18

在进行通信系统仿真时,可以利用randi来生成0,1比特序列。如msg_bit=randi([0,1],1,length_tran_msg};

3:randn函数的用法
命令:randn(N),randn(M,N)等
对于randn(N),通过help randn得到的解释是:R = randn(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard normal distribution.
即randn(N)是生成一个符合标准正态分布的矩阵,其值位于开区间0~1

%生成一组服从(0,1)标准正态分布的序列
r=randn(1,100000);
>> mean(r)%均值
ans =-0.0015
>> var(r)%方差
ans =0.9975
hist(r,1000)%将数据分成1000个组并进行绘制

4:随机数据生成控制语句
在早期的MATLAB版本中,用’seed’,’state’,’twister’等命令控制随机数据的生成,但是这些命令将在未来的版本中被移除。现在用rng语句来代替这些命令,以控制随机数据的生成。见MATLAB中的updating your random number generator syntax
下面介绍rng的使用:
1)当使用rand,randi,randn语句时,其默认的是每次生成的数据不同(使用不同的随机数生成种子)

%前后2次调用rand(1,5)生成不同的数据
rand(1,5)
ans =0.8147    0.9058    0.1270    0.9134    0.6324
rand(1,5)
ans =0.0975    0.2785    0.5469    0.9575    0.9649

而如果你想使得随机数生成命令返回默认状态,只需在随机数据生成命令前加上:

rng('default');

即可。

2)如果想使得生成的随机数据每次都相同,则可以将随机数生成环境保存下来

s=rng;%保存环境
i1=randi(10,1,5)
i1 =2     5    10     8    10
rng(s)%调用之前的环境,则下次生成相同的数据
i2=randi(10,1,5)
i2 =2     5    10     8    10
i3=randi(10,1,5)
i3 =7     1     9    10     7
rng(s)
i3=randi(10,1,5)
i3 =2     5    10     8    10

3)若想依据当前的时间来生成一个种子,进而生成每次不同的随机数据,可以用以下命令:

rng('shuffle');
randi(10,1,5)
ans =9     7     9     1     4
randi(10,1,5)
ans =2     8     3    10     1

MATLAB中常用的几种随机数生成函数相关推荐

  1. Matlab:Matlab中常用的函数、案例详细攻略

    Matlab:Matlab中常用的函数.案例详细攻略 目录 常用函数 1.与文件相关 2.MATLAB GUI不同控件函数间变量传递方法 常用函数 Matlab中的bwmorph函数解释 bwmorp ...

  2. 在MATLAB中生成矩阵的三种方法

    在MATLAB中生成矩阵的三种方法 1. 直接输入法 2. 外部文件读入法 3.特殊矩阵函数生成法 1. 直接输入法 (1)矩阵所有元素必须在[]内 (2)矩阵中同行元素以逗号','或空格分隔 (3) ...

  3. python编程中常用的12种基础知识总结

    python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  4. php三个数字比较大小排序,php中常用的4种实现数字大小排序的冒泡选择等算法函数代码...

    分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中按照从小到大的顺序进行排序. 本站收录这篇文章php中常用的4种实现数字大小排序的冒泡选择等算法函数代码,详细解说文章中相关排序 冒泡 ...

  5. java中常用的几种排序算法--常见笔试面试

    转载:http://blog.csdn.net/ygc87/article/details/7208082 以下列出Java中常用的几种排序算法,只是简单实现了排序的功能,还有待改进,望指教(以下均假 ...

  6. 【温故知新】——原生js中常用的四种循环方式

    一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0   网页输出"欢迎下次光临" 在网页中弹出框输入1   网页输 ...

  7. pytorch梯度下降函数_Pytorch中常用的四种优化器SGD、Momentum、RMSProp、Adam

    来源:AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2019-8-16 引言     很多人在使用pytorch的时候都会遇到优化器选择的问题,今天就给大家介绍对比 ...

  8. python中常用的九种预处理方法

    本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...

  9. 人脸识别中常用的几种分类器

    人脸识别中常用的几种分类器 在人脸识别中有几种常用的分类器,一是最邻近分类器:二是线性分类器 (1)最邻近分类器 最近邻分类器是模式识别领域中最常用的分类方法之一,其直观简单,在通常的应用环境中非常有 ...

最新文章

  1. java数据输入的步骤_Java学习日志1.4 Scanner 数据输入的三种方法
  2. ansys参数化编程与命令手册_查看Bash手册--man命令
  3. 使用 Visual Studio 2005 Team System 进行单元测试并生成用于 Unit Test Framework 的源代码...
  4. Syslistview32+Systreeview32系统操作动态链接库和实际的商业化
  5. Oracle存储过程游标for循环怎么写
  6. python单元测试示范卷_Python单元测试--Unittest
  7. 10天手敲一个SpringBoot网上商城项目(五)——收货地址列表展示功能及设置默认收货地址功能的实现
  8. 【信息系统项目管理师】论文素材大汇总
  9. 获取wifi密码信息(仅供学习使用,勿作他用)
  10. nodejs使用node-ffi-napi 访问dll文件
  11. 【C++11】包装器
  12. SyntaxError: can't assign to operator
  13. 自建局域网 OTA 服务器
  14. Matlab之随机森林TreeBagger
  15. IDEA中连接MySQL时报错:Server returns invalid timezone
  16. python多元线性回归实例_利用Python进行数据分析之多元线性回归案例
  17. 408总线的串并行分类及系统总线局部总线分类
  18. (6.1.7)地址总线,字长,内存容量,寻址范围 之间的计算
  19. oracle evaluate,ORACLE VERSIONS 用法 | 学步园
  20. Android第三方应用分享到微信朋友圈,微信好友(原创)

热门文章

  1. 云计算工程师必备的10本书
  2. linux 超级用户密码忘了,Linux系统下超级管理员root用户的密码忘记了怎么办?
  3. 金成股份冲刺上交所:年营收5.5亿 姬蕾姐弟控制98%股权
  4. not-null property references a null or transient value: 等关于cinema项目bug
  5. 将普通数值转化为科学计数法且保留5位有效数字
  6. Attack on Titan(状态压缩)
  7. 机电传动控制_简要复习笔记
  8. 休止角计算机在线计算,PFC休止角(堆积角)滚筒计算——稻谷
  9. 台湾中央大学认知神经科学研究所所长洪兰对于男女脑活动的比较
  10. android手机解锁成功后的广播,android屏幕加解锁事件广播的监听