使用Monte-Carlo抛点法计算圆周率;(使用sqrt()函数计算点与圆心的距离)
时间: 2024-05-04 22:16:33 浏览: 128
好的,这是一个经典的计算圆周率的问题。使用Monte-Carlo抛点法计算圆周率的步骤如下:
1. 假设有一个半径为r的圆,圆心在坐标系的原点上。
2. 在一个2r * 2r的正方形内随机生成N个点。
3. 计算每个点与圆心的距离,如果距离小于等于半径r,则该点在圆内,否则在圆外。
4. 统计在圆内的点的个数M,计算公式为 M = sum( sqrt((x_i)^2 + (y_i)^2) <= r )。
5. 圆的面积公式为S = π*r^2,而正方形的面积为(2r)^2 = 4r^2,因此圆周率π ≈ 4M/N。
代码实现如下(使用Python语言):
```python
import random
import math
def estimate_pi(n):
num_point_circle = 0
num_point_total = 0
for _ in range(n):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
distance = math.sqrt(x*x + y*y)
if distance <= 1:
num_point_circle += 1
num_point_total += 1
return 4 * num_point_circle / num_point_total
print(estimate_pi(1000000)) # 输出大约是3.141734,与真实的圆周率3.1415926比较接近
```
注意,Monte-Carlo方法的精确度与计算点的数量有关,点数量越多,计算结果越接近真实值。
阅读全文