c语言 圆周率计算(蒙特卡洛算法) pta
时间: 2024-12-15 08:19:29 浏览: 18
Java 蒙特卡洛算法求圆周率近似值实例详解
5星 · 资源好评率100%
在C语言中,圆周率π的计算可以使用一种叫做蒙特卡洛模拟(Monte Carlo method)的统计方法,特别是通过随机投点到单位正方形内并计算落在圆内的点的比例来估算π的值。这是一种直观而有趣的算法,因为π的精确值可以通过无限数量的随机试验来逼近。
以下是简单的步骤:
1. 创建一个足够大的正方形数组,比如边长为2的整数数组。
2. 对每个坐标(x, y),生成一个[0,1]范围内的随机浮点数,作为正方形中的点。
3. 计算这些点与原点(0,0)的距离,如果这个距离小于或等于1,则该点位于单位圆内。
4. 统计落在圆内的点的数量。
5. 使用公式 (4 * 落在圆内的点数 / 总点数) 来近似π的值。
下面是简化的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_POINTS 1000000
double estimate_pi(int points) {
int inside = 0;
srand(time(0)); // 初始化随机种子
for (int i = 0; i < points; i++) {
double x = rand() / (RAND_MAX + 1.0);
double y = rand() / (RAND_MAX + 1.0);
if (x * x + y * y <= 1) {
inside++;
}
}
return 4 * (inside / (double)points);
}
int main() {
printf("Estimated value of pi is %.6f\n", estimate_pi(MAX_POINTS));
return 0;
}
```
注意:虽然这个程序可以在一定程度上估计π,但它并不是特别高效,因为它需要大量的随机点来得到准确的结果。随着点数增加,估算会更接近真实π值。
阅读全文