蒙特卡洛法求圆周率python
时间: 2023-11-20 09:59:48 浏览: 118
以下是使用蒙特卡洛法求解圆周率的Python代码:
```python
from random import random
# 撒点总个数
DARTS = 10000 * 10000
hits = 0.0
for i in range(1, DARTS + 1):
x, y = random(), random()
# 计算点到圆心的距离
dist = pow(x ** 2 + y ** 2, 0.5)
if dist < 1:
hits += 1
# 计算圆周率
pi = 4 * (hits / DARTS)
print("圆周率的值是:{}".format(pi))
```
该代码使用了蒙特卡洛方法,即通过随机撒点的方式来估算圆的面积,从而计算圆周率。具体来说,我们在一个正方形内随机撒点,然后统计落在圆内的点的个数,最后通过计算圆的面积和正方形的面积的比值来估算圆周率。
相关问题
Python程序 蒙特卡洛法求圆周率
蒙特卡洛法是一种基于随机抽样的统计方法,可以用来估计圆周率。在使用蒙特卡洛法求圆周率时,我们可以通过在一个正方形内随机生成大量的点,并统计落在圆内的点的数量来估计圆的面积,从而得到圆周率的近似值。
具体步骤如下:
1. 假设有一个边长为2r的正方形,将其内切于半径为r的圆。
2. 在正方形内随机生成大量的点,坐标范围为[-r, r]。
3. 统计落在圆内的点的数量。
4. 根据统计结果,计算圆的面积,即S = (落在圆内的点数 / 总点数) * (2r)^2。
5. 根据圆的面积公式 S = π * r^2,解得圆周率 π = (落在圆内的点数 / 总点数) * 4。
下面是Python程序示例:
```python
import random
def estimate_pi(num_points):
points_inside_circle = 0
total_points = num_points
for _ in range(num_points):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
distance = x**2 + y**2
if distance <= 1:
points_inside_circle += 1
pi_estimate = 4 * (points_inside_circle / total_points)
return pi_estimate
# 调用函数估计圆周率
num_points = 1000000
pi = estimate_pi(num_points)
print("估计的圆周率为:", pi)
```
蒙特卡洛法圆周率Python
蒙特卡洛法是一种随机模拟方法,可以用来估算圆周率。其基本思想是:在一个正方形中,内切一个半径为1的圆,我们可以通过随机撒点的方式,计算在正方形内的点和在圆内的点的数量,从而得到圆的面积和正方形的面积,再用两者的比值去估算圆周率。
下面是蒙特卡洛法估算圆周率Python代码示例:
```python
import random
n = 1000000 # 撒点数量
count = 0 # 在圆内的点的数量
for i in range(n):
x = random.uniform(-1, 1) # 随机生成x坐标
y = random.uniform(-1, 1) # 随机生成y坐标
if x ** 2 + y ** 2 <= 1: # 判断是否在圆内
count += 1
pi = 4 * count / n # 估算圆周率
print(pi)
```
阅读全文