蒙特卡洛方法求圆周率的python和matlab简单实现

蒙特卡洛方法

蒙特卡洛方法求解圆周率的基本思路是对一个区域撒点,点的掉落是随机的,进行多次撒点后,计算点落在所求区域内外的数量比得到所求数值的近似值。
这个方法是计算思维的一个重要体现,即抽象一种过程,用计算机自动化求解。与依靠具体公式求解的数学思维相对立。
这里选取一个半径为1的圆的1/4,同时给出一个与之相切的正方形的1/4,利用这一部分进行重复的抛点试验。
蒙特卡洛方法求圆周率的python和matlab简单实现_第1张图片

Python实现代码

from random import random #引入随机数函数
n = 1000*1000 #撒点的数量
hits = 0.0 #统计落在圆里的点的数量
for i in range(1,n+1):
    x,y = random(),random() #随机抛点
    dist =  pow(x**2+y**2,0.5) #随机点到圆心的距离
    if dist<=1.0:
        hits = hits + 1 #落在圆内部的点的数量
pi = 4*(hits/n) #圆内外点的对比
print("圆周率值是:{}".format(pi))

matlab实现代码

m = 0; %用来记录在圆的内部的点的个数 
n = 10000;%试验次数
%假设圆的半径为1,也就是正方形的边长是2
for i = 1:n
	x = rand;
	y = rand;
	if (x^2 + y^2) < 1   %如果点到圆形的距离小于半径1
		m = m + 1;   %满足条件,记录次数加1
    end
end
fprintf('圆周率值是:%d',4 * m/n);   %四倍的概率就是pi

你可能感兴趣的:(python学习,matlab学习笔记)