7-1 圆周率计算(蒙特卡洛算法)圆周率计算:求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在 1/4 圆内点的数量占总撒点数的比例计算圆周率值。c语言
时间: 2025-01-24 16:10:31 浏览: 65
好的,我来为您介绍如何使用C语言实现蒙特卡洛算法来计算圆周率。
蒙特卡洛算法是一种基于随机抽样的统计方法,可以通过大量随机点的分布来估算圆周率的值。下面是一个C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
double monte_carlo_pi(int n) {
int i, count = 0;
double x, y;
for (i = 0; i < n; i++) {
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
if (x * x + y * y <= 1) {
count++;
}
}
return (double)count / n * 4;
}
int main() {
int n;
printf("请输入撒点数量: ");
scanf("%d", &n);
srand(time(NULL)); // 初始化随机数种子
double pi = monte_carlo_pi(n);
printf("估算的圆周率值为: %f\n", pi);
return 0;
}
```
这个程序的工作原理如下:
1. `monte_carlo_pi` 函数接受一个参数 `n`,表示要撒的点的数量。
2. 使用 `rand()` 函数生成两个0到1之间的随机数 `x` 和 `y`,代表点在正方形中的坐标。
3. 检查这个点是否在1/4圆内(即 `x^2 + y^2 <= 1`)。如果是,则计数器加1。
4. 重复这个过程 `n` 次。
5. 最后,根据落在1/4圆内的点数占总点数比例,计算圆周率的近似值。
6. 在 `main` 函数中,用户输入撒点的数量,程序调用 `monte_carlo_pi` 函数并输出结果。
使用这个程序时,撒点的数量越多,结果就越精确。但同时,计算时间也会相应增加。
阅读全文
相关推荐

















