Python惰性计算计算圆周率值

本文探讨了Python中惰性计算的优势,特别是在计算圆周率时,即使n值非常大,也能避免内存溢出。通过惰性计算,可以逐次计算而无需一次性加载大量数据,实现了高效的大规模蒙特卡洛模拟求π。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import random
import time
import numpy as np


def a(n):
    count = 0
    j = 0
    start_time = time.perf_counter()
    for i in range(1, n + 1):

        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)

        if pow(x * x + y * y, 0.5) <= 1:
            count += 1
        j += 1
        end_time = time.perf_counter()
        print("{:^10}".format(i), end="    ")
        print("运行时间为{:.4f}s".format(end_time - start_time), end="    ")
        print("误差为{:<8.3%}".format((np.pi - count * 4 / j)/np.pi),end="    ")
        yield count * 4 / j


n = eval(input())
for i in a(n):
    print("拟合值为{:.4f}".format(i))

输出:这里输入的n为10

    1         运行时间为0.0000s    误差为-27.324%    拟合值为4.0000
    2         运行时间为0.0001s    误差为-27.324%    拟合值为4.0000
    3         运行时间为0.0001s    误差为-27.324%    拟合值为4.0000
    4   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值