算法2014 7、己知一个桶圆的长轴长为 10,短轴长为 8,请用蒙特卡洛法计算这个椭圆的面积,并编程实现
作者:
超人不会飞_5
,
2024-11-28 17:10:26
,
所有人可见
,
阅读 4
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(0));
int g = 0; // 记录落在椭圆内的点的数量
const int num_points = 10000000; // 总点数
const double rectangle_area = 10.0 * 8.0; // 椭圆外接矩形的面积
for (int i = 0; i < num_points; i++) {
double x = ((double)rand() / RAND_MAX) * 10.0 - 5.0; // x 在 -5 到 5 之间
double y = ((double)rand() / RAND_MAX) * 8.0 - 4.0; // y 在 -4 到 4 之间
if (x * x / 25.0 + y * y / 16.0 < 1.0) {
g++; // 如果点在椭圆内,则增加计数器
}
}
// 计算并输出椭圆的面积估算值
double ellipse_area_estimate = rectangle_area * ((double)g / num_points);
printf("%lf\n", ellipse_area_estimate);
return 0;
}