理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$

  所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性。

用蒙特卡洛方法进行计算机模拟的步骤:
[1] 设计一个逻辑框图,即模拟模型.
[2] 根据流程图编写程序,模拟随机现象.可通过具有各种概率分布的模拟随机数来模拟随机现象.
[3] 分析模拟结果,计算所需要结果.

ex1.投针试验求$\pi$

    %蒲丰投针实验的计算机模拟
format long; %设置15位显示精度
a=1; l=0.6; %两平行线间的宽度和针长
figure; axis([0,pi,0,a/2]); %初始化绘图板
set(gca,'nextplot','add'); %初始化绘图方式为叠加
counter=0; n=1120; %初始化计数器和设定投针次数
x=unifrnd(0,a/2,1,n); phi=unifrnd(0,pi,1,n); %样本空间Ω
frame=moviein(n); %建立一个1120列的大矩阵
for i=1:n
if x(i)<l*sin(phi(i))/2 %满足此条件表示针与线的相交
plot(phi(i),x(i),'b.');
counter=counter+1; %统计针与线相交的次数
frame(:,counter)=getframe; %描点并取帧
end
end
fren=counter/n; pihat=2*l/(a*fren); %用频率近似计算π
disp(counter);
disp(pihat);

  

ex2.依然求$\pi$

n=10000000; a=2; m=0;
for i=1:n
x=rand*a; y=rand*a;
if ( (x-a/2)^2+(y-a/2)^2 <= (a/2)^2 )
m=m+1;
end
end
disp(['投点法近似计算的π为: ',num2str(4*m/n)]);

ex3.

在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏.为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点.经过长期观察发现,我方指挥所对敌方目标的指示有50%是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一门火炮,有1/6的射击效果能全部毁伤敌人火炮.现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值。

p=0.5;m=2000;
efreq=zeros(1,m);efreq2=zeros(1,m);
randnum1 = binornd(1,p,1,m);
randnum2 = unidrnd(6,1,m);k1=0;k2=0;k3=0;
for i=1:m
if randnum1(i)==0
k1=k1+1;
else
if randnum2(i)<=3
k1=k1+1;
elseif randnum2(i)==6
k3=k3+1;
else
k2=k2+1;
end
end
efreq(i)=(k2+k3)/i;
efreq2(i)=(k2+2*k3)/i;
end
num=1:m;plot(num,efreq,num,efreq2)

  

[matlab]Monte Carlo模拟学习笔记的更多相关文章

  1. [其他] 蒙特卡洛(Monte Carlo)模拟手把手教基于EXCEL与Crystal Ball的蒙特卡洛成本模拟过程实例:

    http://www.cqt8.com/soft/html/723.html下载,官网下载 (转帖)1.定义: 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数 ...

  2. [matlab]bp神经网络工具箱学习笔记

    基本就三个函数: newff():创建一个bp神经网络 train():训练函数 sim():仿真函数 同时具有可视化界面,但目前不知道可视化界面如何进行仿真,且设置不太全 工具箱:Neural ne ...

  3. 《C++ Primer Plus》12.7 队列模拟 学习笔记

    Heather银行打算在Food Heap超市开设一个自动柜员机(ATM).Food Heap超市的管理者担心排队使用ATM的人流会干扰超市的交通,希望限制排队等待的人数.Heather银行希望对顾客 ...

  4. PHP以接口方式实现多重继承(完全模拟)--学习笔记

     1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...

  5. 强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods)

    强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S ...

  6. 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

  7. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  8. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  9. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

随机推荐

  1. CodeBackUP_node_find_serial

    /*************************************************************** ** Find the serial number Node ** R ...

  2. 基于事件驱动的前端通信框架(封装socket.io)

    socket.io的使用可以很轻松的实现websockets,兼容所有浏览器,提供实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验.但是在使用socket.io的过程中,由于业务需求需要同 ...

  3. 【leetcode刷题笔记】Letter Combinations of a Phone Number

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  4. 利用Tkinter做的自动生成JSONSchema的小工具

    前面讲到可以使用JSONSchema做json数据校验, 但是每个接口数据都手动写jsonschema太痛苦了, 就写了个小脚本,可以直接复制接口文档的mock数据然后生成一个简单的jsonschem ...

  5. 亚马逊EC2服务器登录方法

    1.根据官网提供的方法登录连接到EC2服务器(官网推荐windows用户使用PUTTY连接) 2. 创建root的密码,输入如下命令: sudo passwd root 3.然后会提示你输入new p ...

  6. 现有exe转为服务_方式01

    1.安装X.exe服务: ...>路径\X.exe /install 2.卸载X.exe服务: ...>路径\X.exe /uninstall 3.开始运行XX(程序是X.exe,服务名是 ...

  7. TXLSReadWriteII2版本导出Excel文件:

    //TXLSReadWriteII2版本导出Excel文件: procedure TForm1.N1Click(Sender: TObject); var i: Integer; aSaveDialo ...

  8. 分享知识-快乐自己:Liunx 安装 Zookeeper

    Zookeeper可以安装在windows中也可以安装在linux中! 但是我们的服务器基本都是在linux之上 安装我们的 zookeeper 注册中心! 安装成功之后  修改 nat 模式对应的端 ...

  9. jQuery中的动画理论干货

    [jQuery中的动画] 通过jQuery动画能够轻松地为页面添加精彩的视觉效果 [show()方法和hide()方法]1.show()方法和hide()方法是jQUERY中最基本的动画方法,相当于在 ...

  10. Jenkins部署及邮箱配置

    第一步:下载jenkins安装包,下载地址是https://jenkins.io/download/,下载通用的war文件即可,这个格式文件不论哪个操作系统都可运行: 第二步:jdk安装,最新的jen ...