本文共 1196 字,大约阅读时间需要 3 分钟。
圆周率π是一个无理数,没有任何一个精确公式能够计算π值, π的计算只能采用近似算法。
国际公认的PI值计算采用蒙特卡洛方法。
蒙特卡洛(Monte Carlo)方法,又称随机抽样或统计试验方法。当所求解问题是某种事件出现的概率,或某随机变量期望值时,可以通过某种“试验”的方法求解。
简单说,蒙特卡洛是利用随机试验求解问题的方法。
随机向单位正方形和圆结构抛洒大量点,对于每个点,可能在圆内或者圆外,当随机抛点数量达到一定程度,
圆内点将构成圆的面积,全部抛点将构成矩形面积。圆内点数除以圆外点数就是面积之比,即π/4。随机点数量越大,得到的π值越精确
# 夜光:数学奥秘from random import randomfrom math import sqrtfrom time import clockDARTS = 1200hits = 0clock()for i in range(1,DARTS): x,y = random(),random() dist = sqrt(x**2 + y**2) if dist <=1.0: hits = hits + 1pi = 4*(hits/DARTS)print("夜光:pi的值是%s"%pi)print("程序运行的时间是%-5.5ss"%clock())
通过增加DARTS数量继续试验,同时,运行时间也逐渐增加【研究数据】
PS:
在2^30数量级上,π的值就相对准确了。
进一步增加DARTS数量,能够进一步增加精度输入部分通过初始变量DARTS给出;
输出部分通过print函数打印到屏幕上 操作部分主要代码如下:
代码主体是一个循环,模拟抛洒多个点的过程
对于一个抛点,通过random()函数给出随机的坐标值(x,y),然后利用开方函数sqrt()计算抛点到原点距离 然后通过if语句判断这个距离是否落在圆内
最终,根据总抛点落入圆内的数量,计算比值,从而得到π值
转载地址:http://blbo.baihongyu.com/