pta圆周率计算蒙特卡洛c语言
时间: 2024-12-23 08:24:22 浏览: 15
在C语言中,利用Monte Carlo方法估算圆周率(π)通常通过随机点落在单位圆内还是单位正方形内的概率来进行。这个过程的基本思想是,如果我们在一个正方形内随机投掷大量的点,那么落在单位圆内的点数与总点数的比例会无限接近π/4。以下是简单的步骤:
1. 定义一个足够大的整数n,表示我们要投掷的点的数量。
2. 创建两个变量,比如`circle_points`记录落在圆内的点,`square_points`记录落在正方形内的点。
3. 使用循环,对于每个点,生成一个-1到1之间的随机x坐标和y坐标(因为正方形是[-1, 1] x [-1, 1]),检查这两个坐标是否满足(x^2 + y^2 <= 1)这一条件,如果满足则增加`circle_points`,否则增加`square_points`。
4. 投掷结束后,π的估计值就是4乘以`circle_points`除以`square_points`。
C代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000000 // 投掷点的数量
int main() {
srand(time(0)); // 设置随机种子
int circle_points = 0, square_points = 0;
for (int i = 0; i < N; i++) {
double x = (double) rand() / RAND_MAX * 2 - 1;
if (x*x + y*y <= 1) {
circle_points++;
} else {
square_points++;
}
}
double pi_estimate = 4.0 * (double) circle_points / square_points;
printf("Pi estimated using Monte Carlo method is approximately %.6f\n", pi_estimate);
return 0;
}
阅读全文