蒙特卡洛法计算π

1、蒙特卡洛法:

通过获得面积比Sy/Sz:让计算机产生很多的随机点(x,y),其中x、y都是[0,1]之间的随机数,可以用判断 \left ( x^{2} +y^{2}\right )是否小于1的方法来确定是否在圆内,则圆内的点数代表圆面积,总点数代表总面积,两者相除就是面积比Sy/Sz。

Python代码展示如下:

from random import random
from math import sqrt
import time
darts = 10000000  #共这么多个点撒落
hits = 0.0  #击进圆内的点
time.perf_counter()
for i in range(1, darts+1):
    x, y = random(), random()
    dist = sqrt(x**2 + y**2)  #开根号 算点落下是否在半径内
    if dist <= 1.0:  #圆的半径默认1
        hits = hits + 1  #进入了圆内的点
pi = 4 * (hits/darts)
print("pi值是{}".format(pi))
print("运行时间是{:5.5}s".format(time.perf_counter()))

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值