pta圆周率计算:求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在 1/4 圆内点的数量占总撒点数的比例计算圆周率值。c语言解决
时间: 2024-12-15 11:17:41 浏览: 9
在C语言中,我们可以使用蒙特卡洛方法来估算圆周率π。以下是基本的步骤和一个简单的示例代码:
首先,我们需要定义正方形的边长和圆的半径,假设正方形边长为2,那么圆的半径就是1。然后通过随机点落在1/4圆内的比例来近似π。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SQUARE_EDGE 2
#define RADIUS 1
#define MAX_POINTS 1000000
double estimatePi(int num_points) {
int inside = 0;
srand(time(0)); // 初始化随机种子,保证每次运行结果不同
for (int i = 0; i < num_points; ++i) {
double x = (double)rand() / RAND_MAX * SQUARE_EDGE;
double y = (double)rand() / RAND_MAX * SQUARE_EDGE;
if (x*x + y*y <= RADIUS*RADIUS) { // 如果点在圆内
inside++;
}
}
// π ≈ 4 * (inside / num_points)
return 4 * (inside / (double)num_points);
}
int main() {
int points_to_calculate = MAX_POINTS;
double pi_estimate = estimatePi(points_to_calculate);
printf("Using %d random points, estimated value of π is approximately %.6f\n", points_to_calculate, pi_estimate);
return 0;
}
```
这个程序会生成指定数量的随机点,并统计落入圆内(即落在1/4圆内)的点的数量,最后通过比例乘以4来得到π的一个估计值。
阅读全文