编写python函数,计算圆周率。存在圆心在直角坐标系原点且半径为 1 的圆及其外切正方形。为计算方便,仅考虑位于第一象限的四分之一正方形和四分之一圆。随机生成该四分之一正方形中一系列点,散布于四分之一圆内比例即为圆周率四分之一。散步点越多,结果越精确,耗时也越长
时间: 2023-06-18 14:05:47 浏览: 226
可以使用 Monte Carlo 方法来计算圆周率。这种方法是一种随机算法,通过生成随机点并计算点落在圆内的概率来估计圆周率。
具体实现如下:
```python
import random
def estimate_pi(num_points):
points_inside_circle = 0
for i in range(num_points):
x = random.uniform(0, 1)
y = random.uniform(0, 1)
if x**2 + y**2 <= 1:
points_inside_circle += 1
return 4 * points_inside_circle / num_points
```
函数 `estimate_pi` 接受一个参数 `num_points`,表示生成的随机点数。函数首先用一个计数器 `points_inside_circle` 记录落在圆内的点的数量。然后循环生成 `num_points` 个随机点,对于每个随机点,判断其是否落在圆内,如果是,则将计数器加 1。最后返回估计出的圆周率。
使用该函数估计圆周率,可以调用如下代码:
```python
pi = estimate_pi(1000000)
print(pi)
```
该代码将生成 1000000 个随机点,并估计圆周率。输出结果类似于 `3.141592`。注意,随机点数量越大,估计值越接近真实值。但同时计算时间也会增加。
阅读全文
相关推荐












