打开APP
userphoto
未登录

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

开通VIP
蒙特卡罗法概述(5) —— matlab的随机数生成

引言

上文简要介绍了蒙特卡罗法,以及一些简单的应用案例和相关讨论。

蒙特卡罗法概述(1) —— 简介

蒙特卡罗法概述(2) —— 几个例子

蒙特卡罗法概述(3) —— 动力学和有限元中的例子

蒙特卡罗法概述(4) —— 相关讨论 

本文将以matlab为例,介绍其随机数是如何生成的。

随机数

应用蒙特卡罗法的过程中,如何产生需要的随机数是关键的一个环节。

Matlab有很多生成随机数的方法,比较常用的是random这个函数。

Y = random(name,A,B,C,[m,n,...]):

  • Y是生成的随机序列或随机矩阵;

  • name,随机分布的形式;

  • A,B,C,对应随机分布的参数;

  • [m,n,...]矩阵的规模。

例如,Y = random('unif',0,1,[100000,1]),生成了0-1的均匀分布

Y = random('exp',1,[100000,1]),生成了均值为1的指数分布

Y = random('norm',0,1,[N,1]),生成了0~1的高斯分布

随机种子

由于我们生成的实际上是伪随机数,随机数值是可以重现的,这里就要介绍如何应用随机种子

如果我们使用Y = random('norm',0,1,[1,5]),连续使用几次,生成的结果每次都是不同的,如:

这里,系统默认给了一个随机种子,因此每次结果是不同的。

如果我们希望随机化的过程可以重现,我们需要知道当前的随机种子编号,则应用rng这个函数可以实现。

运行以下代码,每次生成的Y都是一致的,因为我们指定了随机种子数:

a = rng(123456);

Y = random('norm',0,1,[1,5]);

随机种子有很多生成方式,系统默认的就有多种方法,如:

a = rng('shuffle', 'twister')

运行显示:

a =

     Type: 'twister'

     Seed: 1771971539

    State: [625x1 uint32]

我们把Seed给记下来,如果想重现,只要用这个随机种子,在rng里重置以下就行了。

常见的方式还有我们自己利用时钟生成随机种子,比如:

t = clock;

s = floor(t(1)+2*t(2)+3*t(3)+4*t(4)+5*t(5)+1000*t(6));

rng(s)

Y = random('norm',0,1,[1,5]);

随机过程

还有一类随机数不仅仅与分布有关,还与序列的排列顺序有关,称之为随机过程

如高斯白噪声,可以通过wgn这个函数实现:

N = 100000;

x = wgn(1,N,0);      %生成N*1个高斯白噪声,功率为0dBW

序列的曲线,及其PSD,还有自相关函数如图。

并且其分布也是满足高斯分布的。

最后

应用蒙特卡罗法的过程中,如何产生需要的随机数是关键的一个环节,本文简要介绍了在Matlab中的常用实现方法,蒙特卡罗法这个专题也暂时告一段落。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
详解各种随机算法
matlab随机数
Python初学系列random是Python的随机数标准库
numpy.random.seed()的理解
蒙特卡洛(MonteCarlo)模拟法一(EXCEL举例)
数学建模的十大算法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服