利用蒙特卡洛方法,可以通过计算圆的面积来计算 π。令 G 为以(2, 1)为中心、半径长度为 4 的圆。选择一个合适的矩形 B,在该矩形内生成大量的随机点。如果(x−xc)**2 +(y−yc)**2<R**2,那么点(x,y)位于以(xc ,yc)为中心、半径为 R 的圆内。请编写程序,通过蒙特卡罗模拟计算 π。
时间: 2023-12-03 17:47:43 浏览: 60
蒙特卡洛的应用—求面积和Pi值
好的,下面是 Python 代码实现:
```python
import random
def estimate_pi(n):
num_points_circle = 0
num_points_total = 0
for _ in range(n):
x = random.uniform(-6, 10)
y = random.uniform(-3, 5)
distance = (x - 2) ** 2 + (y - 1) ** 2
if distance <= 4 ** 2:
num_points_circle += 1
num_points_total += 1
return 4 * num_points_circle / num_points_total
print(estimate_pi(1000000))
```
这里我们假设矩形 B 的边界为 $x \in [-6, 10]$,$y \in [-3, 5]$,它能完全包含住以 $(2, 1)$ 为中心,半径为 $4$ 的圆 G。我们生成 $n$ 个在矩形 B 内的随机点,然后判断每个点是否在圆内。最后,我们统计在圆内的点的数量并用总点数估算 π 值。
值得注意的是,随机点的数量 $n$ 要足够大,越大得到的结果越接近真实值。
阅读全文