用投点法算圆周率c语言
时间: 2024-06-30 07:00:18 浏览: 171
投点法(Monte Carlo 方法)是一种基于随机抽样的数学方法,常用于估算难以直接计算的值,比如圆周率π。在C语言中,你可以使用这个方法来估计π的值,基本思路是创建一个正方形和内切圆,然后统计落入圆内的随机点数量,与总的投点数相比,可以得到圆面积与正方形面积的比例,进而推算π。
以下是一个简单的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SQUARE_SIZE 10000 // 正方形边长
#define NUM_POINTS 1000000 // 投点数量
// 判断点是否落在圆内
int is_in_circle(double x, double y) {
return (x * x + y * y) <= 1;
}
int main() {
srand(time(0)); // 设置随机种子
int num_in_circle = 0;
for (int i = 0; i < NUM_POINTS; i++) {
double x = (double) rand() / RAND_MAX * SQUARE_SIZE; // 随机生成[0, SQUARE_SIZE]的x坐标
double y = (double) rand() / RAND_MAX * SQUARE_SIZE; // 随机生成[0, SQUARE_SIZE]的y坐标
if (is_in_circle(x, y)) {
num_in_circle++;
}
}
// 圆周率的近似值
double pi_estimate = 4 * ((double) num_in_circle / NUM_POINTS);
printf("Using %d points, estimated π is approximately: %.6f\n", NUM_POINTS, pi_estimate);
// 提问部分
阅读全文