C语言蒙特卡洛算法求圆周率
时间: 2025-02-13 08:25:15 浏览: 50
C语言中的蒙特卡洛算法是一种统计模拟方法,用于估算特定数值,如圆周率π。它利用随机抽样的原理来计算。要计算圆周率,我们可以设计一个简单的程序,比如在一个正方形内画许多点,并看有多少点落在了这个正方形内的单位圆内。根据落点的比例,可以近似得到圆的面积与正方形面积的关系,进而推算出π。
以下是基本步骤:
1. 定义一个足够大的正方形区域,例如长宽都是4。
2. 创建大量的随机坐标对,每个坐标都在0到1之间(包括0,不包括1),模拟在正方形内部随机分布的点。
3. 计算落在单位圆内的点的数量。由于单位圆的半径是1,因此判断点距离原点的距离是否小于或等于1即可。
4. 根据公式π = 4 * (圆内点数 / 总点数),计算π的估计值。
这里是一个简单的C语言实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SQUARE_SIZE 4
#define NUM_POINTS 1000000
double estimate_pi() {
srand(time(0)); // 初始化随机数种子
int num_inside_circle = 0;
for (int i = 0; i < NUM_POINTS; i++) {
double x = (double)rand() / RAND_MAX;
double y = (double)rand() / RAND_MAX;
if (x*x + y*y <= 1) { // 判断是否在圆内
num_inside_circle++;
}
}
return 4 * (num_inside_circle / NUM_POINTS);
}
int main() {
printf("Estimated value of pi: %f\n", estimate_pi());
return 0;
}
```
阅读全文
相关推荐


















