在仿真中我们经常要引入一些随机数, 但这些随机数也会导致我们对算法或参数设置的性能的评估有所偏颇。 如果能在两种算法/参数设置的比较中, 把随机数加以固定, 使得比较时两种情况是在相同的随机情况下进行,会更加科学合理。

Matlab中有相关的功能——通过固定随机数种子实现。

Matlab中的随机数函数, rand(), randn()等,其实是基于随机数种子实现的。 如果我们把随机数种子固定了, 那么他们将会产生相同的随机数序列。

随机数种子的函数是rng(seed), 名字非常好记, 其参数seed, 有多种取值:

  • 不加任何参数, 即直接rng()
  • 用0作为种子, 即rng(0)
  • rng('default)
    以上三种是等价的。 即用rng产生随机数种子,默认是用0作为种子参数。
    另外,任何的正数都可以作为种子参数, 如rng(1),就可以生成与rng()不同的随机数种子
    也可以把生成的种子作为参数输入, 如rng(rng(0))
    这里我们只需要记住最简单的用法, 当seed相同时,产生的随机数序列是相同的, 也就可以实现我们要固定随机数的目的。

实现随机数的控制

例如, 我们要比较3种不同的算法,只需要控制三种算法的随机数种子, 那么3种算法运行中的所有随机数都会是一致的。 talk is cheep, show me the code, 下面直接给一个示例的matlab代码来展示下用法:

for i = 1:3rng(0)s = 0;for j = 1:100s = s + rand();ends
end

外层的for循环可以理解为是三种算法,每种算法里, 求100个随机数的和。 最后,打印出来的s是完全一样的。 这说明我们每次rand()生成的随机数序列在每次循环中都是一样的。 为什么呢? **因为我们在每次生成随机数的循环开始前, 先使用 rng(0)固定了随机数种子。 相同的随机数种子下, 生成的是相同的随机数序列, 也就是说这3个循环的100个rand()的结果是完全一样的。

最后, 如何使得每次运行matlab程序时的随机数都一样呢(方便调试)?
很简单, 用以下的代码储存随机数即可:

s = rng(0)
save('s', 's')

把一次生成的随机数种子保存下来。 然后把主程序的代码里改为:

load('s.mat')
rng(s)

就可以固定随机数了。

Matlab固定随机数相关推荐

  1. 【转】利用matlab生成随机数函数

    原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成器 ...

  2. 生成介于0.95-1的随机数MATLAB,matlab生成随机数函数

    matlab生成随机数函数 1. MA TLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数函数 ...

  3. matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数

    如何用matlab生成随机数函数 1. MATLAB 函数 rand 产生在区间 (0, 1)的均匀随机数,它是平均分布在 (0,1)之间.一个称为seed的值则是用来控制产生随机数的次数.均匀随机数 ...

  4. R语言sample随机抽样setseed固定随机数/真随机的原因和方法

    为什么要固定随机数 如果不加set.seed(1),一样可以生成随机数,但是每次执行的结果都会不同,这就会出现一个问题,比如某学者对某问题进行研究,如果每次都是用随机数据不固定随机数的话,就会导致前后 ...

  5. matlab 画随机数图,怎么用matlab生成100个标准正态分布的随机数并画出直方图

    正态分布是normpdf(x,mu,sigma)mu sigma 默认是 0 1例子ez 由热心网友提供的答案1: %生成一组随机数(正态分布)data=normrnd(0,1,1,500);%绘制直 ...

  6. MATLAB固定工业相机曝光时间和增益系数

    MATLAB固定工业相机曝光时间和增益系数 为什么写这篇博文? 正文 为什么写这篇博文? 两个原因. Matlab可以控制工业相机很多参数.但是,网络上关于其参数的配置文章较少,更多出现在论坛之中.这 ...

  7. matlab产生随机数实例,matlab产生随机数

    <matlab产生随机数>由会员分享,可在线阅读,更多相关<matlab产生随机数(2页珍藏版)>请在人人文库网上搜索. 1.rand(n):生成0到1之间的n阶随机数方阵 r ...

  8. matlab生成随机数小结,MATLAB生成随机数总结

    1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是 ...

  9. matlab模拟伯努利实验,matlab仿真随机数的发生

    概率论和数理统计实验(matlab中实现) 一.伯努利漫衍 R=binornd(N,P); //N,P为二次漫衍的俩个参数,返回遵守参数为N,P的二项漫衍的随机数,且N,P,R的形式相同. R=bin ...

最新文章

  1. AspxCallBack控件的CallBack事件
  2. POJ-3264-Balanced Lineup-单点更新
  3. 数据结构(六)---队列的链式存储的实现---java版
  4. Dapr微服务应用开发系列1:环境配置
  5. [html] html5点击返回键怎样不让它返回上一页
  6. 前端学习(2671): vue3.0脚手架获取功能页面布局
  7. 【2017年第4期】数据管理能力成熟度模型
  8. python qtextedit设置光标位置_Python基础命令学习——就这一篇文章就够了
  9. mondrian olap 示例_详解OLAP概念、基本内容、特点、分类
  10. python-packaging 命令行脚本
  11. 大道至简第七章读后感
  12. java--idea-生成jar包的配置
  13. 所有for循环都可以用while循环改写python_python-for循环与while循环
  14. 小程序——列表,详情页(模板)
  15. 8Manage助力迈迪思创项目业务一体化
  16. linux查看日志相关命令
  17. leapFTP上传网页到服务器,leapftp登录ftp服务器
  18. android怎实现拼图功能,基于Android的趣味拼图的实现
  19. 如何使用微PE工具箱制作U盘PE
  20. react中动态渲染背景图片

热门文章

  1. 【面向对象】重载和重写
  2. 吴军关于“命运”的分享
  3. iframe跨端口报错 :Blocked a frame with origin
  4. 史玉柱:社会对我的要求比对陈天桥丁磊高
  5. Quant Practise
  6. “最粉嫩”的JVM垃圾回收器及算法,隔壁都馋哭了
  7. H3C交换机密码加密解密
  8. 进入AMI BOIS界面设置断电后开机
  9. GB/T25915.1法规基本标准-附 录 B(资料性)等级划分计算
  10. OpenOfficeException:not obtain service: com.sun.star.ucb.FileContentProvider 解决