python菜鸟-----蒙特卡罗方法计算圆周率

蒙塔卡洛方法:四分之一圆 / 正方形
利用 random() 函数生成随机点
for …in 循环;
pow(x ** 2 + y ** 2,0.5) 小于 圆半径1的计数(点数越多越精确)
在这里插入图片描述
自己尝试写的代码:

import random
def judge(a,b):
    if pow(a ** 2 + b ** 2 ,0.5) <= 1.0:
        return True
    else :
        return False
points,n = 1000 * 1000 ,0
for i in range(points):
    x,y = random.random(),random.random()
    if judge(x,y):
        n += 1
print("圆周率的估算:{}".format(4*(n / points)))
结果:圆周率的估算:3.141376

资料中的代码:

from random import random   """ 上下对比,利用 from random import random 可以减少 上面的 	 
								random.random() 的累赘 """
from time import perf_counter
DARTS = 1000 * 1000
hits = 0.0
start = perf_counter()
for i in range(1,DARTS+1):  """  对于 range(1,DARTS+1) 我觉得和 range(DARTS)区别不大,
							   因为下面的代码并没有使用到i这个变量 """
    x,y = random(),random()
    dist = pow(x ** 2 + y ** 2 ,0.5)
    if dist <= 1.0:
        hits += 1
pi = 4 * (hits / DARTS)
print("圆周率的数值为:{}".format(pi))
print("运行时间是:{:.5f}".format(perf_counter() - start))
结果:圆周率的数值为:3.1407
	 运行时间是:0.83409
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值