用蒙特卡洛方法算pi-基于python和R语言

最近follow了MOOC上一门python课,开始学Python。同时,买来了概率论与数理统计,准备自学一下统计。(因为被鄙视过不是统计专业却想搞数据分析)

有趣的是书里面有一块讲蒲丰投针计算Pi,这是一种随机模拟法,也就是蒙特卡洛法。蒲丰投针之于我太难,暂时没想到怎么用计算机模拟这一过程。

python课中,老师也提到用随机模拟法,也就是蒙特卡洛法(MonteCarlo),用计算机模拟几千次实验,计算pi的近似值。好巧。

就拿python课中的方法,来近似计算pi,分别用python和R实现一下。

至于实验是怎样的,截图老师的PPT。

我用的是python 3

python代码:

from random import random
from math import sqrt
from time import clock
darts=2**22
hist=0
clock()
for i in range(1,darts):
x,y=random(),random()
dist=sqrt(x**2+y**2)
if dist<=1.0:
hist=hist+1
pi=4*(hist/darts)
print('pi is %s'%pi)
print('elaspe is %ss'%clock())

python运行结果:

pi is 3.143444061279297
elaspe is 85.991785

R 代码:

#蒙特卡洛方法求pi
hist <- 0
darts <- 2^22
start <-proc.time()
for (i in 1:darts){
x <- runif(1);y <- runif(1)
if(sqrt(x^2+y^2)>1) next
hist=hist+1
}
pi <- 4*hist/darts
proc.time()-start
print(paste0('pi is ',pi))

R运行结果:

> proc.time()-start
用户 系统 流逝
31.537 2.477 34.153
> print(paste0('pi is ',pi))
[1] "pi is 3.14076137542725"

  

总结:R和python都挺好用的,下一步准备试着用python写点小爬虫程序。

用蒙特卡洛方法计算派-python和R语言的更多相关文章

  1. 比较分析C++、Java、Python、R语言的面向对象特征,这些特征如何实现的?有什么相同点?

    一门课的课后题答案,在这里备份一下: 面向对象程序设计语言 –  比较分析C++.Java.Python.R语言的面向对象特征,这些特征如何实现的?有什么相同点? C++ 语言的面向对象特征: 对象模 ...

  2. 预测分析建模 Python与R语言实现

    预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...

  3. 蒙特卡洛方法计算圆周率的三种实现-MPI openmp pthread

    蒙特卡洛方法实现计算圆周率的方法比较简单,其思想是假设我们向一个正方形的标靶上随机投掷飞镖,靶心在正中央,标靶的长和宽都是2 英尺.同时假设有一个圆与标靶内切.圆的半径是1英尺,面积是π平方英尺.如果 ...

  4. Python调用R语言

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...

  5. 在天河二号上对比Julia,Python和R语言

    Julia是一款高级高效为技术计算(technical computing)而设计的编程语言,其语法与其他计算环境类似.其为分布式计算和并行所设计,最知名的地方在于其接近C语言的高效率. 按开发者的话 ...

  6. python调用R语言,关联规则可视化

    首先当然要配置r语言环境变量什么的 D:\R-3.5.1\bin\x64; D:\R-3.5.1\bin\x64\R.dll;D:\R-3.5.1;D:\ProgramData\Anaconda3\L ...

  7. 结合MATLAB、Python、R语言,在求得显著差异的边(节点对)之后,怎么画circle图

                                                            先来看看成果图: OK,开始画图: 实验背景声明:在脑影像分析中,我们首先构建脑网络,然 ...

  8. python 和 R 语言 中的 range() 函数

    1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...

  9. python 和 R 语言中的等差数列

    等差数列的通项公式:an = a0 + n*d. 数学上 n 是可以取遍整个整个正整数集的,在现实中,n  是有范围的. 1.R 语言用 seq()  函数产生等差数列: 2.python 中 ran ...

随机推荐

  1. 搭建hadpoot平台(集群式分布)

    1.先下载VMware1.2,然后安装. 2.下载ubuntu-1.4.05-desktop-amd64.iso.下载地址:http://mirrors.aliyun.com/ubuntu-relea ...

  2. my.资料_副本_破六欲

    http://www.nok2.com/fxjy/816.html 梦幻之家礼包网讲解梦幻2破除心魔 来源:www.nok2.com作者:礼包达人时间:2016-04-01 22:11 最近听到不少小 ...

  3. 如何利用fastjson将JSON格式的字符串转换为Map,再返回至前端成为js对象

    //注意,这里的jsonStr是json格式的字符串,里面如果遇到双引号嵌套双引号的,一般是嵌套的双引号经过转义 //    \",假如有这样的一个场景,这些字符串里面有需要的css样式的j ...

  4. 数据结构---Java---HashMap

    1.概述 [hash冲突]: 对某个元素进行哈希函数运算,得到一个地址值,要进行插入时,发现此地址被占用,称为hash冲突(哈希碰撞): [hash冲突解决]: 开放定址(发生冲突,继续寻找下一块未被 ...

  5. 所有节点配置NTP服务

    主节点: 打开vim /etc/ntp.conf文件 For more information about this file, see the man pages # ntp.conf(), ntp ...

  6. Android NDK开发 Jni中Debug(三)

    下载LLDB 配置Android Native - Debugger 调式结果如下 #include <jni.h> #include <string.h> #include& ...

  7. 关于火狐不响应event.keyCode解决方法

    <body onkeydown="enterkey(event)"> <!-- 点击键盘即触发 enterkey函数 --> function enterk ...

  8. inventor安装失败怎样卸载安装inventor 2016?

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  9. ApplicationContextAware的作用

    ApplicationContextAware其实我们看到---Aware就知道是干嘛用的了,就是属性注入的, 但是这个ApplicationContextAware的不同地方在于,实现了这个接口的b ...

  10. 用spring的 InitializingBean 的 afterPropertiesSet 来初始化

    void afterPropertiesSet() throws Exception; 这个方法将在所有的属性被初始化后调用. 但是会在init前调用. 但是主要的是如果是延迟加载的话,则马上执行. ...