概率实验一:随机数的生成与蒙特卡洛随机模拟方法 - 副本
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function liti1(p,mm) pro=zeros(1,mm); randnum = binornd(1,p,1,mm) a=0; for i=1:mm
a=a+randnum(1,i); pro(i)=a/i; end pro=pro num=1:mm; plot(num,pro)
在Matlab命令行中输入以下命令: liti1(0.5,1000)
掷一枚均匀硬币,正面朝上的次数X服 从参数为1,p的二项分布,X~B(1,p)
总结:常见分布的随机数产生语句
❖ 补充:随机数的产生命令
❖ MATLAB可以直接产生满足各种分布的随机数
❖ 具体命令如下:
❖ ① 产生m×n阶[0,1]上均匀分布的随机数矩阵
❖
rand(m,n)
❖ 产生一个[0,1]上均匀分布的随机数
3.产生 m n 阶均值为 ,标准差为 的正态分布的随机数矩阵: normrnd ( , ,m, n)
产生一个均值为 ,标准差的正态分布的随机数: normrnd ( , )
•当研究对象视为大量相互独立的随机变量之和, 且其中每一种变量对总和的影响都很小时,可以 认为该对象服从正态分布。
exprnd(mu) 注意: 产生一个参数为λ的指数分布的随机数应输入
exprnd(1/λ)
❖ ⑥ 产生m×n阶参数为A1,A2,A3的指定分布'name'的随机数 矩阵
random('name',A1,A2,A3,m,n) ❖ 产生一个参数为为A1,A2,A3的指定分布'name'的随机数
random('name',A1,A2,A3) ❖ 举例: 产生2×4阶的均值为0方差为1的正态分布的随机数矩阵
④ 产生m×n阶均值为mu方差为sigma的正态分布的随 机数矩阵
normrnd(mu,sigma,m,n) 产生一个均值为mu方差为sigma的正态分布的随机数
normrnd(mu,sigma) ⑤ 产生m×n阶期望值为mu (mu=1/λ)的指数分布的随机 数矩阵
exprnd(mu,m,n) 产生一个期望值为mu的指数分布的随机数
蒲丰投针实验的计算机模拟:
format long; a=1; l=0.6; %显示精度, 线宽和针长
figure; axis([0,pi,0,a/2]); %初始化绘图板
set(gca,'nextplot','add'); %初始化绘图方式为叠加
counter=0; n=2010; %初始化计数器和设定投针次数
for ii=1:mm
if abs(randnum(ii,1))<=20
frq=frq+1;
end
end
proguji=frq/mm
liti5(10000)
proguji = 0.5557
三)蒲丰投针实验:
❖ 法国科学家蒲丰(Buffon)在1777年提出 的蒲丰投针实验是早期几何概率一个非常 著名的例子。蒲丰投针实验的重要性并非 是为了求得比其它方法更精确的π值,而 是它开创了使用随机数处理确定性数学问题的先河,
是用偶然性方法去解决确定性计算的前导,由 此可以领略到从“概率土壤”上开出的一朵 瑰丽的鲜花——蒙特卡罗方法(MC)
❖ 蒲丰投针实验可归结为下面的数学问题:平面上画 有距离为a的一些平行线,向平面上任意投一根长 为l(l<a)的针,假设针落在任意位置的可能性相同, 试求针与平行线相交的概率P(从而求π)
4.产生 m n 阶期望值为 的指数分布的随机数矩阵:
exprnd (,m, n )
•若连续型随机变量X的概率密度函数为
f
(
x)
1
ex
/
0
x0 x0
其中 >0为常数,则称X服从参数为 的 指数分布。
•指数分布的期望值为
•排队服务系统中顾客到达间隔、质量与可靠性 中电子元件的寿命通常服从指数分布。
❖
它是样本空间Ω子集A,面积是:S(A)
sin l
2d l
❖ 积分计算 syms l phi; int('l/2*sin(phi)',0phi,0,pi);
%ans=l
❖ 因此,针与平行线相交的概率为:p S(A) / S() 2l / a ❖ 从而有: 2l ap 特别当 a 2l 时 1 p p为统计频率
实验一
随机数的产生及蒙特卡 洛随机模拟方法
实验目的
学习随机数的产生及蒙特卡洛随机模拟方法 的基本过程与方法。
实验内容
1、产生随机数的计算机命令。 2、蒙特卡洛随机模拟实例。
实验作业
数学模拟的方法
在一定的假设条件下,运用数学运算模拟系统 的运行,称为数学模拟。现代的数学模拟都是在计 算机上进行的,称为计算机模拟。
计算机模拟可以反复进行,改变系统的结构和 系数都比较容易。
在实际问题中,面对一些带随机因素的复杂系 统,用分析方法建模常常需要作许多简化假设, 与面临的实际问题可能相差甚远,以致解答根本 无法应用。这时,计算机模拟几乎成为唯一的选 择。
一、随机数的产生
一)产生模拟随机数的计算机命令
在Matlab软件中,可以直接产生满足各种分布的随 机数,命令如下: 1.产生m*n阶(a,b)均匀分布U(a,b)的随机数矩阵:
二、蒙特卡罗随机模拟
蒙特卡洛(Monte Carlo)方法是一种 应用随机数来进行计算机模拟的方法.此方法 对研究的系统进行随机观察抽样,通过对样本 值的统计分析,求得所研究系统的某些参数.
用蒙特卡洛方法进行计ຫໍສະໝຸດ Baidu机模拟的步骤:
[1] 设计一个逻辑框图,即模拟模型.这个框 图要正确反映系统各部分运行时的逻辑关系。
❖ n=10000; a=2; m=0; ❖ for i=1:n ❖ x=rand(1)*a; y=rand(1)*a;
y y
(a/2,a/2)
❖ if ( (x-a/2)^2+(y-a/2)^2 <= (a/2)^2 )
❖ m=m+1; ❖ end
o
x
o
x
❖ end
❖ disp(['投点法近似计算的π为: ',num2str(4*m/n)]);
counter=counter+1; %统计针与线相交的次数
end
end
fren=counter/n; pihat=2*l/(a*fren) %用频率近似计算π
%movie(frame,1)
%播放帧动画1次
蒲丰投针实验计算圆周率π
❖ 蒙特卡罗投点法是蒲丰投针实验的推广:
❖ 在一个边长为a的正方形内随机投点,该点落在此 正方形的内切圆中的概率应为该内切圆与正方形 的面积比值,即
例 顾客到达某商店的间隔时间服从参数为 10(分钟)的指数分布(指数分布的均值为10)
----- 指两个顾客到达商店的平均间隔时间是 10分钟.即平均10分钟到达1个顾客. 顾客到达 的间隔时间可用exprnd(10)模拟。
5.产生 m n 阶参数为 的泊松分布的随机数矩阵: poissrnd ( ,m, n)
[2] 模拟随机现象.可通过具有各种概率分布 的模拟随机数来模拟随机现象.
一)频率的稳定性模拟
1.事件的频率 在一组不变的条件下,重复作n次试验,记m是n次试验 中事件A发生的次数。
频率 f=m/n
2.频率的稳定性 掷一枚均匀硬币,记录掷硬币试验中频率P*的波动情况。
在Matlab中编辑.m文件如下:
random('Normal',0,1,2,4) ❖ 'name'的取值可以是(详情参见help random): ❖ 'norm' or 'Normal' / 'unif' or 'Uniform' ❖ 'poiss' or 'Poisson' / 'beta' or 'Beta' ❖ 'exp' or 'Exponential' / 'gam' or 'Gamma' ❖ 'geo' or 'Geometric' / 'unid' or 'Discrete Uniform' ❖ ……
在Matlab中编辑.m文件如下:
function proguji=liti5(mm)%mm 是随机实验次数
frq=0;
randnum1=unifrnd(0,60,mm,1);
randnum2=unifrnd(0,60,mm,1);
randnum=randnum1-randnum2;
proguji=0;
•设离散型随机变量X的所有可能取值为0,1,2,…,且取 各个值的概率为
P( X k) ke , k 0,1,2, ,
k!
其中 >0为常数,则称X服从参数为 的泊松分布。
•泊松分布的期望值为
•泊松分布在排队系统、产品检验、天文、物理等 领域有广泛应用。
6 产生1个参数为n,p的二项分布的随机数 binornd(n,p),产生mn个参数为n,p的二项分布的 随机数binornd(n,p,m,n) 。
unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:
unifrnd (a,b)
当只知道一个随机变量取值在(a,b)内,但 不知道(也没理由假设)它在何处取值的概率大, 在何处取值的概率小,就只好用U(a,b)来模拟它。
2.产生mm*nn阶离散均匀分布的随机数矩阵: R = unidrnd(N) R = unidrnd(N,mm,nn)
2. 概率计算 P(A)=[A的度量]/[S的度量]
例5 两人约定于12点到1点到某地会面,先到者 等20分钟后离去,试求两人能会面的概率? 解:设x, y分别为甲、乙到达时刻(分钟)
令A={两人能会面}={(x,y)||x-y|≤20,x≤60,y≤60}
P(A)=A的面积/S的面积 =(602-402)/602=5/9=0.5556
在Matlab命令行中输入以下命令: liti1(0.5,10000)
练习掷一枚不均匀硬币,正面出现概率 为0.3,记录前1000次掷硬币试验中正 面频率的波动情况,并画图。
在Matlab命令行中输入以下命令: liti1(0.3,1000)
二)几何概率模拟
1.定义
向任一可度量区域G内投一点,如果所投的点落在G中 任意可度量区域g内的可能性与g的度量成正比,而与 g的位置和形状无关,则称这个随机试验为几何型随 机试验。或简称为几何概型。
x=unifrnd(0,a/2,1,n); phi=unifrnd(0,pi,1,n); %样本空间Ω
for i=1:n
if x(i)<l*sin(phi(i))/2 %满足此条件表示针与线的相交
plot(phi(i),x(i),'r.'); frame(i)=getframe; %描点并取帧
title(['Current Point ',num2str(i),' Total ',num2str(n)]);
作业:1.掷两枚不均匀硬币,每枚正面出现概率为 0.4,记录前1000次掷硬币试验中两枚都为正面频 率的波动情况,并画图。
2 : 两船欲停靠同一个码头, 设两船到达码头的时间 各不相干,而且到达码头的时间在一昼夜内是等 可能的. 如果两船到达码头后需在码头停留的时 间分别是1 小时与2 小 时,试求在一昼夜内,任一 船到达时,需要等待空出码头的概率. (频率估计 概率)
❖ 蒲丰投针实验:
❖ 如右图所示,以M
❖ 表示针落下后的中点,
❖ 以x表示M到最近一条
❖ 平行线的距离,以φ表示针与此线的交角:
❖ 针落地的所有可能结果满足:0 x a 2, 0
❖ 其样本空间视作矩形区域Ω, 面积是: S() a 2
❖ 针与平行线相交的条件:0 x sinl 2, 0
❖
rand
❖ ② 产生m×n阶[a,b]上均匀分布的随机数矩阵
❖
unifrnd (a,b,m, n)
❖ 产生一个[a,b]上均匀分布的随机数
❖
unifrnd(a,b)
❖ ③ 产生一个1:n的随机排列(元素均出现且不重复)
❖
p=randperm(n)
❖ 注意: randperm(6)与unifrnd (1,6,1, 6)的区别
a=a+randnum(1,i); pro(i)=a/i; end pro=pro num=1:mm; plot(num,pro)
在Matlab命令行中输入以下命令: liti1(0.5,1000)
掷一枚均匀硬币,正面朝上的次数X服 从参数为1,p的二项分布,X~B(1,p)
总结:常见分布的随机数产生语句
❖ 补充:随机数的产生命令
❖ MATLAB可以直接产生满足各种分布的随机数
❖ 具体命令如下:
❖ ① 产生m×n阶[0,1]上均匀分布的随机数矩阵
❖
rand(m,n)
❖ 产生一个[0,1]上均匀分布的随机数
3.产生 m n 阶均值为 ,标准差为 的正态分布的随机数矩阵: normrnd ( , ,m, n)
产生一个均值为 ,标准差的正态分布的随机数: normrnd ( , )
•当研究对象视为大量相互独立的随机变量之和, 且其中每一种变量对总和的影响都很小时,可以 认为该对象服从正态分布。
exprnd(mu) 注意: 产生一个参数为λ的指数分布的随机数应输入
exprnd(1/λ)
❖ ⑥ 产生m×n阶参数为A1,A2,A3的指定分布'name'的随机数 矩阵
random('name',A1,A2,A3,m,n) ❖ 产生一个参数为为A1,A2,A3的指定分布'name'的随机数
random('name',A1,A2,A3) ❖ 举例: 产生2×4阶的均值为0方差为1的正态分布的随机数矩阵
④ 产生m×n阶均值为mu方差为sigma的正态分布的随 机数矩阵
normrnd(mu,sigma,m,n) 产生一个均值为mu方差为sigma的正态分布的随机数
normrnd(mu,sigma) ⑤ 产生m×n阶期望值为mu (mu=1/λ)的指数分布的随机 数矩阵
exprnd(mu,m,n) 产生一个期望值为mu的指数分布的随机数
蒲丰投针实验的计算机模拟:
format long; a=1; l=0.6; %显示精度, 线宽和针长
figure; axis([0,pi,0,a/2]); %初始化绘图板
set(gca,'nextplot','add'); %初始化绘图方式为叠加
counter=0; n=2010; %初始化计数器和设定投针次数
for ii=1:mm
if abs(randnum(ii,1))<=20
frq=frq+1;
end
end
proguji=frq/mm
liti5(10000)
proguji = 0.5557
三)蒲丰投针实验:
❖ 法国科学家蒲丰(Buffon)在1777年提出 的蒲丰投针实验是早期几何概率一个非常 著名的例子。蒲丰投针实验的重要性并非 是为了求得比其它方法更精确的π值,而 是它开创了使用随机数处理确定性数学问题的先河,
是用偶然性方法去解决确定性计算的前导,由 此可以领略到从“概率土壤”上开出的一朵 瑰丽的鲜花——蒙特卡罗方法(MC)
❖ 蒲丰投针实验可归结为下面的数学问题:平面上画 有距离为a的一些平行线,向平面上任意投一根长 为l(l<a)的针,假设针落在任意位置的可能性相同, 试求针与平行线相交的概率P(从而求π)
4.产生 m n 阶期望值为 的指数分布的随机数矩阵:
exprnd (,m, n )
•若连续型随机变量X的概率密度函数为
f
(
x)
1
ex
/
0
x0 x0
其中 >0为常数,则称X服从参数为 的 指数分布。
•指数分布的期望值为
•排队服务系统中顾客到达间隔、质量与可靠性 中电子元件的寿命通常服从指数分布。
❖
它是样本空间Ω子集A,面积是:S(A)
sin l
2d l
❖ 积分计算 syms l phi; int('l/2*sin(phi)',0phi,0,pi);
%ans=l
❖ 因此,针与平行线相交的概率为:p S(A) / S() 2l / a ❖ 从而有: 2l ap 特别当 a 2l 时 1 p p为统计频率
实验一
随机数的产生及蒙特卡 洛随机模拟方法
实验目的
学习随机数的产生及蒙特卡洛随机模拟方法 的基本过程与方法。
实验内容
1、产生随机数的计算机命令。 2、蒙特卡洛随机模拟实例。
实验作业
数学模拟的方法
在一定的假设条件下,运用数学运算模拟系统 的运行,称为数学模拟。现代的数学模拟都是在计 算机上进行的,称为计算机模拟。
计算机模拟可以反复进行,改变系统的结构和 系数都比较容易。
在实际问题中,面对一些带随机因素的复杂系 统,用分析方法建模常常需要作许多简化假设, 与面临的实际问题可能相差甚远,以致解答根本 无法应用。这时,计算机模拟几乎成为唯一的选 择。
一、随机数的产生
一)产生模拟随机数的计算机命令
在Matlab软件中,可以直接产生满足各种分布的随 机数,命令如下: 1.产生m*n阶(a,b)均匀分布U(a,b)的随机数矩阵:
二、蒙特卡罗随机模拟
蒙特卡洛(Monte Carlo)方法是一种 应用随机数来进行计算机模拟的方法.此方法 对研究的系统进行随机观察抽样,通过对样本 值的统计分析,求得所研究系统的某些参数.
用蒙特卡洛方法进行计ຫໍສະໝຸດ Baidu机模拟的步骤:
[1] 设计一个逻辑框图,即模拟模型.这个框 图要正确反映系统各部分运行时的逻辑关系。
❖ n=10000; a=2; m=0; ❖ for i=1:n ❖ x=rand(1)*a; y=rand(1)*a;
y y
(a/2,a/2)
❖ if ( (x-a/2)^2+(y-a/2)^2 <= (a/2)^2 )
❖ m=m+1; ❖ end
o
x
o
x
❖ end
❖ disp(['投点法近似计算的π为: ',num2str(4*m/n)]);
counter=counter+1; %统计针与线相交的次数
end
end
fren=counter/n; pihat=2*l/(a*fren) %用频率近似计算π
%movie(frame,1)
%播放帧动画1次
蒲丰投针实验计算圆周率π
❖ 蒙特卡罗投点法是蒲丰投针实验的推广:
❖ 在一个边长为a的正方形内随机投点,该点落在此 正方形的内切圆中的概率应为该内切圆与正方形 的面积比值,即
例 顾客到达某商店的间隔时间服从参数为 10(分钟)的指数分布(指数分布的均值为10)
----- 指两个顾客到达商店的平均间隔时间是 10分钟.即平均10分钟到达1个顾客. 顾客到达 的间隔时间可用exprnd(10)模拟。
5.产生 m n 阶参数为 的泊松分布的随机数矩阵: poissrnd ( ,m, n)
[2] 模拟随机现象.可通过具有各种概率分布 的模拟随机数来模拟随机现象.
一)频率的稳定性模拟
1.事件的频率 在一组不变的条件下,重复作n次试验,记m是n次试验 中事件A发生的次数。
频率 f=m/n
2.频率的稳定性 掷一枚均匀硬币,记录掷硬币试验中频率P*的波动情况。
在Matlab中编辑.m文件如下:
random('Normal',0,1,2,4) ❖ 'name'的取值可以是(详情参见help random): ❖ 'norm' or 'Normal' / 'unif' or 'Uniform' ❖ 'poiss' or 'Poisson' / 'beta' or 'Beta' ❖ 'exp' or 'Exponential' / 'gam' or 'Gamma' ❖ 'geo' or 'Geometric' / 'unid' or 'Discrete Uniform' ❖ ……
在Matlab中编辑.m文件如下:
function proguji=liti5(mm)%mm 是随机实验次数
frq=0;
randnum1=unifrnd(0,60,mm,1);
randnum2=unifrnd(0,60,mm,1);
randnum=randnum1-randnum2;
proguji=0;
•设离散型随机变量X的所有可能取值为0,1,2,…,且取 各个值的概率为
P( X k) ke , k 0,1,2, ,
k!
其中 >0为常数,则称X服从参数为 的泊松分布。
•泊松分布的期望值为
•泊松分布在排队系统、产品检验、天文、物理等 领域有广泛应用。
6 产生1个参数为n,p的二项分布的随机数 binornd(n,p),产生mn个参数为n,p的二项分布的 随机数binornd(n,p,m,n) 。
unifrnd (a,b,m, n) 产生一个[a,b]均匀分布的随机数:
unifrnd (a,b)
当只知道一个随机变量取值在(a,b)内,但 不知道(也没理由假设)它在何处取值的概率大, 在何处取值的概率小,就只好用U(a,b)来模拟它。
2.产生mm*nn阶离散均匀分布的随机数矩阵: R = unidrnd(N) R = unidrnd(N,mm,nn)
2. 概率计算 P(A)=[A的度量]/[S的度量]
例5 两人约定于12点到1点到某地会面,先到者 等20分钟后离去,试求两人能会面的概率? 解:设x, y分别为甲、乙到达时刻(分钟)
令A={两人能会面}={(x,y)||x-y|≤20,x≤60,y≤60}
P(A)=A的面积/S的面积 =(602-402)/602=5/9=0.5556
在Matlab命令行中输入以下命令: liti1(0.5,10000)
练习掷一枚不均匀硬币,正面出现概率 为0.3,记录前1000次掷硬币试验中正 面频率的波动情况,并画图。
在Matlab命令行中输入以下命令: liti1(0.3,1000)
二)几何概率模拟
1.定义
向任一可度量区域G内投一点,如果所投的点落在G中 任意可度量区域g内的可能性与g的度量成正比,而与 g的位置和形状无关,则称这个随机试验为几何型随 机试验。或简称为几何概型。
x=unifrnd(0,a/2,1,n); phi=unifrnd(0,pi,1,n); %样本空间Ω
for i=1:n
if x(i)<l*sin(phi(i))/2 %满足此条件表示针与线的相交
plot(phi(i),x(i),'r.'); frame(i)=getframe; %描点并取帧
title(['Current Point ',num2str(i),' Total ',num2str(n)]);
作业:1.掷两枚不均匀硬币,每枚正面出现概率为 0.4,记录前1000次掷硬币试验中两枚都为正面频 率的波动情况,并画图。
2 : 两船欲停靠同一个码头, 设两船到达码头的时间 各不相干,而且到达码头的时间在一昼夜内是等 可能的. 如果两船到达码头后需在码头停留的时 间分别是1 小时与2 小 时,试求在一昼夜内,任一 船到达时,需要等待空出码头的概率. (频率估计 概率)
❖ 蒲丰投针实验:
❖ 如右图所示,以M
❖ 表示针落下后的中点,
❖ 以x表示M到最近一条
❖ 平行线的距离,以φ表示针与此线的交角:
❖ 针落地的所有可能结果满足:0 x a 2, 0
❖ 其样本空间视作矩形区域Ω, 面积是: S() a 2
❖ 针与平行线相交的条件:0 x sinl 2, 0
❖
rand
❖ ② 产生m×n阶[a,b]上均匀分布的随机数矩阵
❖
unifrnd (a,b,m, n)
❖ 产生一个[a,b]上均匀分布的随机数
❖
unifrnd(a,b)
❖ ③ 产生一个1:n的随机排列(元素均出现且不重复)
❖
p=randperm(n)
❖ 注意: randperm(6)与unifrnd (1,6,1, 6)的区别