1,rand 生成均匀分布的伪随机数。分布在(0~1)之间

主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数

rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single'

rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪随机数

2,randn 生成标准正态分布的伪随机数(均值为0,方差为1)

主要语法:和上面一样

3, randi 生成均匀分布的伪随机整数

主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数

randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵

r

=

randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵

二,关于随机种子,伪随机数的重复生成

正常情况下每次调用相同指令例如rand生成的伪随机数是不同的,

例如:

rand(1,3)

rand(1,3)

matlab的输出为:

ans =

0.139043482536049 0.734007633362635 0.194791464843949

ans =

0.602204766324215 0.937923745019422 0.149285414707192

如何使两个语句生成的随机数相等呢?

Matlab帮助中的下面章节有所叙述:

Managing theDefault

Stream

管理默认(缺省)流

rand,

randn,

and randidraw

random numbers from anunderlying random number stream, called the

default stream.The @RandStream

class allows you to get a

handle to the default streamand control random number

generation.

rand,randn,和randi

从一个基础的随机数流中得到随机数,叫做默认流。你可以通过@RandStream

类得到默认流的句柄从而控制随机数的生成。

Get a handle to the default stream

asfollows:

以下为得到默认流句柄的代码:

defaultStream=RandStream.getDefaultStream

defaultStream =

mt19937ar random stream (current default)

Seed: 0

RandnAlg: Ziggurat

Return the properties of the stream object with theget

method:

用get方法返回流对象属性:

get(defaultStream)

Type: 'mt19937ar'

NumStreams: 1

StreamIndex: 1

Substream: 1

Seed: 0

State: [625x1 uint32]

RandnAlg: 'Ziggurat'

Antithetic: 0

FullPrecision: 1

The State

property is the internal state of the generator. You can save the State

of defaultStream

.

state属性是发生器的内部状态,你可以保存默认流的状态:

myState=defaultStream.State;

Using myState

, you can restore the state of defaultStream

and reproduce previous results.

利用myState你可以恢复默认流状态重新生成前面的结果:

myState=defaultStream.State;

A=rand(1,100);

defaultStream.State=myState;

B=rand(1,100);

isequal(A,B)

ans =

1

你也可以直接使用@RandStream

类的reset静态方法重置种子状态来获取相同的随机生成序列,下面是示例代码:

stream

=RandStream.getDefaultStream;%获取默认的随机种子(暂时这么叫,帮助有详细解释)

reset(stream);%重置

rand(stream,1,3)

reset(stream);%重置

rand(stream,1,3)

matlab的输出为:

ans =

0.814723686393179 0.905791937075619 0.126986816293506

ans =

0.814723686393179 0.905791937075619 0.126986816293506

可以看出生成的随机码是相等的,这样可以用于重复实验上来

-------以上为转载部份-------------转载处:新浪博客--无名指

以上的说明表RandStream可以完成相同随机数的生成,这对于结果的可重复性是至关重要的。

下面从另一个方面,说明RandStream的应用场景,例如:

第一次在matlab运行程序的过程中我们生成了100个rand的随机数,然后退出了matlab.

第二次我们又在matlab中运行这个程序,那么,这次生成的100的rand随机数,实际上与第一次中的100个rand随机数是一样的,因此,这两次程序的运行结果将会一样,保证了结果的可重复性。

但是,往往,有这样的应用,在机器学习和模式识别中,我们要检验一个算法的稳健性,往往要在同个数据集上,运行多次,然后取平均值表明为这个算法的在这个数据集上的性能。假设运行100次,当要完成这100次所花费的时间很长时,自然我们想到,在n

个matlab中分开运行这100次,每个运行100/n次,为了得到每个运行结果的不一样,就需要运用RandStream

[s1,...,sn] = RandStream.create('mrg32k3a','NumStreams',n);  %得到新的stream

s = RandStream.getDefaultStream; %保存原有的默认stream

RandStream.setDefaultStream(si);  %重置默认stream

%%%%%%run procedure%%%%%

RandStream.setDefaultStream(s);  %还原默认stream

这样就保证了每个matlab运行的结果不一样。

matlab fromstream,Matlab中的RandStream的应用场景 -转相关推荐

  1. matlab fromstream,matlab安装问题求助

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我在mac上安装matlabr2019b的时候出现了这个报错 是否要重新尝试安装 examples/antenna_common? 如果按"否& ...

  2. Matlab中的RandStream

    一,matlab中生成随机数主要有三个函数:rand, randn,randi 1,rand  生成均匀分布的伪随机数.分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机 ...

  3. matlab获取目录中图像名称及路径的递归实现

    一个matlab获取目录中图像名称及路径的递归实现~ matlab源文件 getImageList.m [c-sharp] view plaincopyprint? function [ imageL ...

  4. matlab从图表中提取数据

    有如下的波形图,如何从中精确提取出全部的数据: 1,将波形图片(截图)保存为test.png或test.jpg,并将图片放于matlab工作目录中,如下图示例所指定的目录中: 2,新建文件,输入如下程 ...

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

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

  6. Matlab去掉数组中0

    n = 0; a(a==n) = []; 当然n可以改成任意值,即Matlab去掉数组中的任意值,感觉比find函数还简单. 猜你喜欢:

  7. 转载:如何将一个新函数加到MATLAB函数库中

    如何将一个新函数加到MATLAB函数库中 nkszjx2 2017-09-29 11:25:26 13864 收藏 2 分类专栏: matlab 文章标签: matlab 库 </div> ...

  8. MATLAB的GUI中给坐标轴四周加上边框

    在MATLAB的GUI中如何为坐标轴四边加上方框,效果如下图: 首先打开一个GUI文件,建立一个坐标轴,如下图所示: 双击该坐标轴,在弹出的检查器中,在Box那一栏后面勾上,如下图所示: 此时坐标轴四 ...

  9. matlab从矩阵中取rp开头文件,matlab trainrp

    Af ] train(net, P,T, Pi, Ai,VV ,TV ) 3 [Y, Pf , Af , E, perf ] sim(net, P, Pi, Ai,T ) {'tansig','pur ...

最新文章

  1. 122112_1452_Word1
  2. web cache缓存原理
  3. PLM在企业中的实际价值与意义
  4. 【vue】.native给组件绑定原生事件
  5. 看到数学就打怵不是你的错:百万人调查发现上黑板做题、作业太多、家长陪写都会引发焦虑|PNAS...
  6. 3.3 集束搜索-深度学习第五课《序列模型》-Stanford吴恩达教授
  7. Linux中字符设备注册方式,3.4. 字符设备注册
  8. stm32 fatfs fopen err_disk__小型文件系统FatFS和LittleFS对比和区别
  9. php json 不转义字符串,PHP的json_encode不会转义所有JSON控制字符
  10. 第4章 变量、作用域和内存问题
  11. Python机器学习:梯度下降法005梯度下降法和数据标准化
  12. linux更新驱动脚本,Linux 第一个驱动程序编写
  13. C++之指针探究(十四):回调函数
  14. K3wise数据字典及常用表及视图
  15. google 浏览器下载历史版本的方法
  16. python人脸识别门禁系统毕设_基于人脸识别的门禁系统设计与实现
  17. 数据执行保护呈灰色无法开启 用命令BCEDIT无效 请问怎么解决?
  18. obs摄像头模糊_【OBS虚拟摄像头插件】OBS虚拟摄像头下载OBS VirtualCam v2020 官方版-趣致软件园...
  19. Java月薪24k_一位月薪1.2w的北漂程序员真实生活!
  20. selenium2java 截图保存桌面(内含一坑)

热门文章

  1. 方舟投资(ark-invest)的十五大预测
  2. 操作系统OS笔记(未完)
  3. 购买阿里云云盘怎么挂载上去
  4. 佳能R5相机断电0KB字节DAT视频文件无法打开播放怎么数据恢复MP4
  5. ZYNQ平台学习--(3)u-boot编译
  6. 【DVT】build 提示no source files were complied for project
  7. EBSD的具体功能及样品制备
  8. 微信小程序 最强连一连攻略 程序自动玩
  9. 杭 州 市 区 土 地 级 别 划 分 范 围 表 杭州 地段划分 一类 二类
  10. 南航空乘、地服广州白云机场上演春运快闪