博文上次更新时间
2025-09-28 14:54:31
尝试插入代码段
摘要:本文尝试插入代码段以查看是否支持代码段插入。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define PI 3.14159265358979323846
double buffon_laplace(double l, double a, double b) {
return (2 * l * (a + b) - l * l) / (PI * a * b);
}
int main() {
srand(time(NULL)); // 初始化随机数种子
int needle_count = 1000000; // 针的数量
double l = 1.0; // 针的长度
double a = 2.0; // 网格的宽度
double b = 2.0; // 网格的间距
int crosses = 0; // 落在线上的次数
clock_t start_time = clock();
// 模拟投针
for (int i = 0; i < needle_count; i++) {
double x = (double)rand() / RAND_MAX * a; // 随机生成针的x坐标
double angle = (double)rand() / RAND_MAX * PI; // 随机生成针的角度
double y = (double)rand() / RAND_MAX * b / 2; // 随机生成针的y坐标
if (x <= l * cos(angle)) // 如果针与线相交
crosses++;
}
double estimated_pi = (double)needle_count / crosses * buffon_laplace(l, a, b);
clock_t end_time = clock();
double running_time = (double)(end_time - start_time) / CLOCKS_PER_SEC;
printf("Estimated value of pi: %f\n", estimated_pi);
printf("Running time: %f seconds\n", running_time);
return 0;
}