C++用蒙特卡洛法求圆周率
时间: 2023-07-11 13:52:07 浏览: 58
蒙特卡洛方法是一种基于随机数的数值计算方法,可以用来估算圆周率。具体实现方法如下:
1. 将一个正方形分成四个部分,其中一个四分之一的部分是一个半径为1的圆形,其余为正方形。
2. 在正方形内随机生成一定数量的点,计算其中落在圆内的点的数量。
3. 将落在圆内的点数量除以总点数,乘以4,即为估算的圆周率。
以下是C++代码实现:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand((unsigned)time(NULL)); // 设置随机数种子
int n = 1000000; // 随机生成点的数量
int count = 0; // 落在圆内的点的数量
double x, y; // 随机生成的点的坐标
for (int i = 0; i < n; i++)
{
x = (double)rand() / RAND_MAX; // 在[0,1]范围内生成随机数
y = (double)rand() / RAND_MAX;
if (x * x + y * y <= 1) // 判断点是否在圆内
count++;
}
double pi = (double)count / n * 4; // 计算估算的圆周率
cout << "pi = " << pi << endl;
return 0;
}
```
运行结果示例:
```
pi = 3.1414
```