`
tifayuki
  • 浏览: 11405 次
  • 性别: Icon_minigender_1
  • 来自: JP/US
最近访客 更多访客>>
社区版块
存档分类
最新评论

Monte Carlo (蒙特卡罗) 计算圆周率Pi

阅读更多

蒙特卡罗算法计算圆周率的主导思想是:统计学(概率)

原理:
先画一个正方形,画出其内切圆,然后这个正方形内随机的画点,设点落在圆内的概为P,则P=圆面积/正方形面积。
P=Pi*R*R/ 2R*2R=Pi/4         即 Pi=4P
—————————
实验步骤:
1. 在一个平面直角坐标系下(暂定第一象限),在点(R , R)(R>0)处画一个半径为R的圆。

2. 以这个圆画一个外接正方形,其边长为2R。

3. 随机取一点(X,Y)使得0<=X<=2R并且0<=Y<=2R,即随机点在正方形内。

4. 判断点是否在圆内,通过公式(R-X)(R-X)+(R-Y)(R-Y)<R*R计算。

5. 设所有点(也就是实验次数)的个数为N,落在圆内的点(满足步骤4的点)的个数为M,则
    P=M/N           于是Pi=4*N/M
————————
简化步骤:
1.将圆心设在原点,以R为半径做圆,则第一象限的1/4圆面积为Pi*R*R/4

2.做该1/4圆的外接正方形, 坐标为(0,0)(0,R)(R,0)(R,R),则该正方形面积为R*R

3.随即取点(X,Y),使得0<=X<=R并且0<=Y<=R,即点在正方形内

4.通过公式 X*X+Y*Y<R*R判断点是否在1/4圆周内。

5.设所有点(也就是实验次数)的个数为N,落在1/4圆内的点(满足步骤4的点)的个数为M,则
    P=M/N           于是Pi=4*N/M
————————
伪代码:
calculate(N)              //设置迭代次数,即实验样本数,即点的总个数,即N
{
       counter=N ;   
       M=0;                   //统计落在1/4圆周内的点的个数
       radius=1;             //设半径为1
       while(counter-- >0)
       {   
              x=rand();                  //返回0到1间的随机数
              y=rand();
              if(x*x+y*y<=1)        //检验点是否落在1/4圆内
                       M++;
       }
       return M/N;
}
___________________________________________________________________
根据概率论的原理,当实验次数越多(N越大),所计算出的Pi也越准确。

但计算机上的随机数毕竟是伪随机数,当取值超过一定值,也会出现不随机现象,因为伪随机数是周期函数。因此为了提高准确度,可以固定一个较大的N值(使之小于伪随机函数的周期即可),进行多次计算Pi值(每次采用不同的随机数种子),然后对其求平均数的方法即可。

0
0
分享到:
评论

相关推荐

    蒙特-卡罗仿真方法 Monte Carlo Simulation

    ### 蒙特-卡罗仿真方法 Monte Carlo Simulation #### 蒙特卡洛方法概述 蒙特卡洛方法(Monte Carlo Simulation)是一种利用随机抽样或统计试验来进行问题求解的重要技术手段,尤其适用于那些传统解析方法难以处理...

    用蒙特卡罗方法计算圆周率的近似值.pdf

    蒙特卡罗方法(Monte Carlo Method)是一种基于概率统计的数值计算方法,通过大量的随机抽样来解决各种科学计算问题。这种方法在解决复杂的数学问题时尤为有效,尤其是在那些传统解析方法难以应用的场景下。随着...

    Monte_Carlo_1.zip_圆周率_圆周率计算_蒙特卡洛 积分_蒙特卡洛积分_计算圆周率

    利用蒙特卡洛方法计算圆周率的基本思想是:假设有一个边长为2的正方形,其中包含一个半径为1的单位圆。如果我们随机在这个正方形内生成大量点,那么这些点落在圆内的概率就是π/4。通过统计落入圆内的点的数量,并与...

    蒙特卡罗方法 计算圆周率程序的python实现

    蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法。当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的...

    毕业设计MATLAB_使用蒙特卡罗方法计算圆周率.zip

    标题中的“毕业设计MATLAB_使用蒙特卡罗方法计算圆周率”表明这是一个使用MATLAB编程语言进行的毕业设计项目,主要目的是通过蒙特卡罗方法来估算圆周率π的值。蒙特卡罗方法是一种基于随机抽样或统计试验的数值计算...

    8-利用特卡罗方法计算圆周率pi-少儿编程scratch项目源代码文件案例素材.zip

    标题 "8-利用特卡罗方法计算圆周率pi-少儿编程scratch项目源代码文件案例素材.zip" 提供了一个关于编程教育的项目,它利用了特卡罗(Monte Carlo)方法来估算圆周率π的值。这个项目是为初学者设计的,特别是针对...

    计算圆周率π(PI)

    除此之外,还有Monte Carlo方法,通过随机模拟来估计π的值,例如,投掷大量点到一个正方形内,其中包含一个半径为1的圆,圆内点的比例与π/4的乘积近似于π。 在给定的"求圆周率π(PI).exe"文件中,可能是一个...

    蒙特卡罗算法与matlab_Monte Carlo方法概述.rar

    以求解圆周率π为例,蒙特卡罗方法可以通过以下步骤实现: 1. 在一个边长为2的正方形内随机生成大量点。 2. 计算这些点中有多少落在半径为1的单位圆内。 3. 圆内点的比例近似于π/4,通过这个比例可以估计π的值。 ...

    用蒙特卡洛方法求π派

    【标题】"用蒙特卡洛方法求π派"是一个基于C++编程的主题,通过蒙特卡洛模拟来估算圆周率π的数值。这种方法是概率统计中的一个经典应用,利用随机抽样来解决数学问题。 【描述】指出,这个程序不仅展示了蒙特卡洛...

    趣味 SQL:使用蒙特卡洛方法计算圆周率 Pi 的值

    蒙特卡洛方法(Monte Carlo method)也称统计模拟法、统计试验法。蒙特卡洛方法的基本思想是:首先建立一个描述问题的概率模型或随机过程,使它的参数或数字特征等于问题的解;然后通过对模型或过程的观察或抽样试验...

    PiDay : approximation of pi by Monte Carlo method:根据蒙特卡洛方法计算pi近似值的小代码-matlab开发

    “PiDay : approximation of pi by Monte Carlo method”是指在圆周率日(Pi Day)通过蒙特卡洛方法实现π的近似计算。圆周率日通常是指3月14日(3月的第14天,即3.14),是一个庆祝数学常数π的特殊日子。而...

    圆周率计算 3000位 pi的计算 VC++ C++代码

    在计算机科学领域,计算圆周率(Pi)的精确值是一项经典的挑战,因为π是一个无理数,其小数部分无限且无规律。本主题聚焦于使用VC++和C++编程语言来计算圆周率的前3000位数字。这种计算方法通常涉及到数学算法和...

    pi_计算PI_Fortran_

    标题中的"pi_计算PI_Fortran_"表明我们将探讨如何使用Fortran编程语言来计算圆周率PI。Fortran(FORmula TRANslation)是一种高级编程语言,尤其适合科学计算和数值分析。 在描述中提到的“圆周率PI的计算”是一个...

    计算圆周率

    在计算机科学中,有多种方法可以用于近似计算圆周率,包括巴比伦法、马赫林级数、蒙特卡洛方法、阿基米德公式等。 描述中反复提到了“计算圆周率c代码”,这可能是指一个C语言程序,该程序实现了某种特定的算法来...

    pi-web-worker:使用Monte Carlo模拟和Web Workers计算Pi编号

    在本文中,我们将深入探讨如何使用JavaScript中的Monte Carlo模拟和Web Workers技术来并行计算π(圆周率)的值。"pi-web-worker"项目就是这样一个实例,它展示了这两种技术的有效结合。 首先,让我们理解Monte ...

    monte carlo在Matlab中的实现

    三、实例:计算圆周率 一个经典的蒙特卡洛问题是对单位圆的面积进行估计。假设我们有一个边长为2的正方形,其中包含一个单位半径的圆。随机生成大量的点,统计落在圆内的点的数量,可以估算出圆的面积。 ```matlab...

    用MPI计算PI的值

    例如,Monte Carlo方法可以用来估算π的值,其基本思想是随机生成大量点,然后计算这些点中落在单位圆内的比例。这个比例与π/4相乘,即可得到π的近似值。并行计算的优势在于,可以同时处理更多的点,从而加快计算...

    Monte Carlo Methods

    ### 蒙特卡洛方法:游戏中的概率与科学计算 #### 引言:蒙特卡洛方法概览 蒙特卡洛方法是一系列通过重复模拟来获得各种问题近似解的技术集合,其核心思想是利用随机性进行计算。这种方法不仅适用于具有内在随机性...

Global site tag (gtag.js) - Google Analytics