Python:蒙特卡洛方法求圆周率

题目:使用蒙特卡洛方法求圆周率。

基本思想:利用圆与其外接正方形面积之比为 pi /的关系,通过产生大量均匀分布的二维点,计算落在单位圆和单位正方形的数量之比再乘以4便得到 pi 的近似值。样本点越多,计算出的数据将近真实的 pi .

代码实现的具体步骤:

1.导入random模块,用于生成随机数。
import random
2.定义一个的函数(pi),用来接受一个表示要进行模拟的样本点数量的参数(nums)。
def pi(nums):
3.在函数内部初始化一个变量(inside_circle),用于记录落在单位圆内的点的数量。
inside_circle = 0
4.使用for循环生成nums个随机点
    for _ in range(nums):       
5.生成一个在[-1, 1]范围内的随机x坐标,一个在[-1, 1]范围内的随机y坐标
        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)
6.计算该点到原点的距离(平方和:x**2)
distance = x ** 2 + y ** 2
7.判断如果距离小于等于1,说明该点在单位圆内,将inside_circle加1。
        if distance <= 1:
            inside_circle += 1
8.计算圆的面积与正方形的面积之比(*4),并返回π的近似值(pi_approximation)。
pi_approximation = (inside_circle / nums) * 4
    return pi_approximation
9.设置了nums为1000000,进行100万次随机采样。
nums = 1000000
10.调用pi函数来计算π的近似值,并将结果赋给变量approx_pi
approx_pi = pi(nums)
print("通过蒙特卡洛方法计算得到的圆周率近似值为:", approx_pi)

完整代码:

import random

def pi(nums):
    inside_circle = 0

    for _ in range(nums):
        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)
        distance = x ** 2 + y ** 2

        if distance <= 1:
            inside_circle += 1

    pi_approximation = (inside_circle / nums) * 4
    return pi_approximation

nums = 1000000
approx_pi = pi(nums)

print("通过蒙特卡洛方法计算得到的圆周率近似值为:", approx_pi)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值