用蒙特卡洛方法计算派-python和R语言

用蒙特卡洛方法算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写点小爬虫程序。

时间: 2024-08-24 08:48:45

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

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

一门课的课后题答案,在这里备份一下: 面向对象程序设计语言 –  比较分析C++.Java.Python.R语言的面向对象特征,这些特征如何实现的?有什么相同点? C++ 语言的面向对象特征: 对象模型:封装 (1)  访问控制机制: C++提供完善的访问控制机制,分别是: public,protected和private. private, public, protected 访问标号的访问范围 public 可访问 1.该类中的函数 : 2.子类的函数: 3.其友元函数访问:4.该类的对象访

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

蒙特卡洛方法实现计算圆周率的方法比较简单,其思想是假设我们向一个正方形的标靶上随机投掷飞镖,靶心在正中央,标靶的长和宽都是2 英尺.同时假设有一个圆与标靶内切.圆的半径是1英尺,面积是π平方英尺.如果击中点在标靶上是均匀分布的(我们总会击中正方形),那么飞镖击中圆的数量近似满足等式 飞镖落在圆内的次数/飞镖落在标靶内的总次数=π/4 因为环包含的面积与正方形面积的比值是π/4. 因为环所包含的面积与正方形面积的比值是π/4. 我们可以用这个公式和随机数产生器来估计π的值. 伪代码如下: numb

蒙特卡洛方法计算pi

基本思想: 利用圆与其外接正方形面积之比为pi/4的关系,通过产生大量均匀分布的二维点,计算落在单位圆和单位正方形的数量之比再乘以4便得到pi的近似值.样本点越多,计算出的数据将会越接近真识的pi(前提时样本是"真正的"随机分布). 蒙特卡罗(Monte Carlo)算法计算圆周率的主要思想:给定边长为R的正方形,画其内切圆,然后在正方形内随机打点,设点落在圆内的概为P,则根据概率学原理:    P = 圆面积 / 正方形面积 = PI * R * R / 2R * 2R = PI /

算法之美--1.蒙特卡洛方法计算pi

#include <iostream> #include <iomanip> using namespace std; #define SIZE 8 int main(int argc, char **argv[]) { int matrix[SIZE][SIZE] = {0}; int a[SIZE][SIZE] = { 0 }; int *p = nullptr; p = &matrix[0][0]; //初始化矩阵 for (int k = 0; k < SIZ

机器学习算法基础(Python和R语言实现)

https://www.analyticsvidhya.com/blog/2015/08/common-machine-learning-algorithms/?spm=5176.100239.blogcont61037.12.0MhmIg https://yq.aliyun.com/articles/61037?spm=5176.100239.bloglist.110.rlSDN9 We are probably living in the most defining period of hu

python 数据分析,R语言与数据挖掘|学习资料分享 05

python 数据分析 为什么选 python 做数据分析? 在数据分析和交互.探索性计算以及数据可视化等方面,Python 将不可避免地接近于其他开源和商业的领域特定编程语言/工具,如R.MATLAB.SAS.Stata等.近年来,由于 Python 有不断改良的库(主要是 pandas),使其成为数据处理任务的一大替代方案.结合其在通用编程方面的强大实力,我们完全可以只使用 Python 这一种语言去构建以数据为中心的应用程序. R语言是由 AT&T 贝尔实验室开发的一种用来进行数据探索.统

做数据分析,Python和R究竟哪个更强?

作者: Enoch Kan编译: Mika本文为 CDA 数据分析师原创作品,转载需授权 几十年来,研究人员和开发人员一直在争论,进行数据科学和数据分析,Python和R语言哪种才是更好的选择.近年来,数据科学在生物技术.金融和社交媒体等多个行业迅速发展.数据科学的重要性不仅得到了业内人士的认可,而且还得到了许多学术机构的认可,目前越来越多的学校都开始设立数据科学学位. 随着开源技术的迅速取代了传统的闭源技术,Python和R语言在数据科学中变得越来越受欢迎. 数据科学就业增长图--Indeed

《Python和R数据挖掘技术》50本内部教材,全免费邮寄!

随着互联网.移动互联网的发展,我们已经迎来了一个大数据的时代. 如何对海量数据进行挖掘和分析? Python是一个数据分析和图形显示的程序设计环境,用于统计分析.绘图的语言和操作环境.python有简便而强大的编程语言:可操纵数据的输入和输入,可实现分支.循环,用户可自定义功能. 2017年8月2日,培训中心将举办"Python和R数据挖掘技术-基于Python和R语言的数据挖掘和统计分析技术"公开课. 很多学员由于工作等原因不能到北京进行现场学习,为使更多学员了解这个课程,本培训中心

Python 中使用R语言

Python与R属于面向对象的的语言,各具优劣,本文意在将python与R语言相结合,以充分利用两者的优势.因此,本文主要 探讨Python与R语言的基本配置要求,Python调用R语言的配置,R语言在python中的使用等几个方面.由于笔者时间有限,只能 一点点更新,望见谅. I,本文中python与R软件的基本配置 python与R语言同为免费的开源语言,这给我们免费使用并学习这两门语言带来了极大的方便. python anaconda3.5.1 , R 3.2.3,  fedora lin