蒙特卡洛方法 圆周率 c++
时间: 2024-10-13 19:04:05 浏览: 25
蒙特卡洛方法是一种数值积分和统计模拟的技术,它通过大量随机抽样,利用随机事件的结果来估计数学问题的解,尤其是对于难以解析求解的问题。这种方法得名于著名的摩纳哥赌博城市,常用于概率、物理、金融等领域。
计算圆周率的一个经典应用就是蒙特卡洛方法中的“投针实验”。在C++中,你可以编写一个程序,比如在一个正方形内随机生成大量的点,然后检查这些点是否落在了单位圆内。圆内的点数占总点数的比例乘以4(因为正方形面积是圆的四倍),可以近似得到π的值。以下是简化的C++代码示例:
```cpp
#include <iostream>
#include <random>
double estimate_pi(int num_points) {
double inside = 0;
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<> dis(0.0, 1.0);
for (int i = 0; i < num_points; ++i) {
double x = dis(gen), y = dis(gen);
if (x * x + y * y <= 1.0) {
inside++;
}
}
return 4 * (inside / static_cast<double>(num_points));
}
int main() {
int points = 1000000;
double pi_estimate = estimate_pi(points);
std::cout << "Estimated value of Pi with " << points << " points is: " << pi_estimate << std::endl;
return 0;
}
阅读全文