R语言-蒲丰投针问题(向量化)
蒲丰投针问题的具体过程及推导可参考百科,此处不再赘述,这里仅给出模拟步骤和实现代码。
蒲丰投针试验的模拟步骤
- 设定试验总次数 NNN,成功次数m=0m = 0m=0,针的长度为hhh,平行线间的距离为aaa (h⩽ah\leqslant ah⩽a)
- 产生随机数X∼U(0,a/2)X\sim U\left(0,a/2\right)X∼U(0,a/2),θ∼U(0,π)\theta\sim U\left(0,\pi\right)θ∼U(0,π)
- 若X⩽h2sinθX\leqslant \frac{h}{2}sin\thetaX⩽2hsinθ,m=m+1m=m+1m=m+1,转上一步
- 若达到试验总次数N,停止实验,计算π\piπ的估计值π^=2hNam\widehat{\pi }=\frac{2hN}{am}π=am2hN
代码实现
- 常规思想
buffon<-function(N,a,h){m = 0for (i in 1:N){x<-runif(1,0,a/2)theta<-runif(1,0,pi) %X和theta的产生if(x<=h/2*sin(theta)){ %判断条件m=m+1}}pin<-2*h*N/(a*m) %pi的估计值result<-c('pi估计值'=pin)return(result)
}buffon(10000,2,0.8) %调用
- 向量化思想
buffon<-function(N,a,h){m = 0if(h<=a){x<-runif(N,0,a/2)theta<-runif(N,0,pi) %直接产生N个x和thetam = sum(x<=h/2*sin(theta)) %满足判别条件时值为1,并求和pin<-2*h*N/(a*m)}else{stop("Error") %h小于等于a的判别}return(pin)
}buffon(10000,2,0.8)
避免显示循环,遵循向量化原则,才能高效的使用R语言。
R语言-蒲丰投针问题(向量化)相关推荐
- c语言模拟随机投点计算概率,我写的蒲丰投针的程序(用概率学计算π),有问题求教...
谢谢各位的回答. 此题我已经解决了. 问题是我提议没理解清楚,估计还误导大家了. 蒲丰投针的平行线是一组的,我以为是2条.呵呵. 那么这样的话相交条件改一下,就行了. 下面是我的程序,有兴趣的朋友可以 ...
- 强化学习 蒲丰投针实验 蒙特卡洛算法
目录 一.蒲丰投针实验 1.1背景故事 1.2原理介绍 二.蒙特卡洛方法 2.1方法介绍 2.2经验轨迹 2.3在线学习与离线学习 2.4数学原理 一.蒲丰投针实验 1.1背景故事 1777年,蒲丰请 ...
- 蒲丰投针计算机模拟ppt,蒙特卡罗模拟课件.ppt
<蒙特卡罗模拟课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<蒙特卡罗模拟课件.ppt>文档请在天天文库搜索. 1.蒙特卡洛模拟数学实验之前 ...
- 蒙特卡洛—模拟蒲丰投针
蒲丰投针实验: 公式推导: 实现代码: # 其实这里根据已知的pi然后计算出概率算出自己的pi import numpy as np import matplotlib.pyplot as plt i ...
- 蒲丰投针问题的matlab仿真
吃饭的时候突然想到蒲丰投针问题. 在许多地方都遇到过此针,高中概统,大学概统,随机过程的概率部分,今天读Shannon的传记,他女儿不小心把针洒地上了. 问题描述: 在平面中有一组间隔为a的平行线,随 ...
- Matlab模拟蒲丰投针实验计算Π值
文章目录 1.前言 2.实验目的 3.实验原理 (1)问题描述 (2)问题求解 4.实验过程 5.实验结果 6.实验结论 7.Matlab代码 1.前言 学习了概率论,决定自己动手编程实现蒲丰投针实验 ...
- 【游戏仿真实验】Unity仿真蒲丰投针实验,丢针计算圆周率,丢了一百万次针得出的结果是...
文章目录 一.前言 二.制作场景 1.制作针模型 2.桌面制作 3.平行线制作 三.物理仿真 1.桌面无反弹 2.针掉落 3.针滚动问题 4.针架到平行线上的问题 5.针与针相互影响的问题 四.UI界 ...
- 蒲丰投针计算机模拟ppt,蒲丰投针实验模课件.doc
概率论与数理统计实验 蒲丰投针与蒙特卡罗法 班级 应数12级01班 学号 2012444086 姓名 张旭东 蒲丰投针与蒙特卡罗法 张旭东 2012444086 (重庆科技学院 数学与应用数学 ,重庆 ...
- 树的结点数+蒲丰投针概率
1.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,-,nk个度为k的结点,问该树中有多少个叶子结点? 设该树中的叶子数为n0个.该树中的总结点数为n个,则有: n=n0+n1+n2+- ...
最新文章
- 神操作!一行Python代码搞定一款游戏?给力!
- (转)C# foreach 中获取索引index的方法
- conda 删除环境_conda建立、删除、退出环境
- ubuntu 网卡双网口 配置_Ubuntu 18.04 设置多网卡多端口聚合
- web播放器(falsh,audio)
- vuejs构建的单页面应用history模式子页面微信分享在iOS中遇到的问题
- 傅里叶变换库FFTW的安装配置(VS2010)
- 业界聚焦机器人发展:需要攻克核心技术
- Linux沙箱技术简介
- 2分钟搞定收货地址三级联动,数据易于维护,更新。
- html调用ckplayer说明,CKplayer功能配置(示例代码)
- 睢阳区中小学计算机提升培训,商丘市中小学电脑制作活动培训顺利举行
- centOS7 防火墙关闭 远程端口无法访问问题
- U盘文件全部变成只读模式的解决办法
- 如何下载网易云音乐APP里的MV和短视频?
- 【photoshop】笔记之图层详解
- 为什么宇宙会将最大速度限制在光速?
- Android-SQLite数据库实例,Android的Io模型你了解多少
- 基于C#的超市收银管理系统
- APP爬虫| 逆向神器 frida 初试
热门文章
- awvs安装及问题解决
- 宝鲲财经:外汇技术精髓
- Using platform encoding GBK actually to copy filtered reso
- C++ 判断路径是否存在,不存在则创建(包含多级创建)
- 优化扩展live555支持MP2T(mpeg2ts)RTSP拉流附源代码
- 牛视系统怎么做矩阵?牛视系统源码怎么独立部署?
- ARM STMFD, STMFA, STMED, STMEA, LDMFD, LDMFA, LDMED, LDMEA
- 袁萌:收到南京大学录取通知书的那一瞬间
- 什么是skywalking
- 基于51单片机的温度湿度采集系统