给出使用蒙特卡罗算法计算半径为 1 单元的球体 体积的c++代码
时间: 2024-03-14 20:46:34 浏览: 99
在Linux或Windows环境下配置OpenMP开发运行环境,并利用蒙特卡罗算法计算半径为 1 单元的球体体积 .docx
5星 · 资源好评率100%
下面是使用蒙特卡罗算法计算半径为 1 单元的球体 体积的 C++ 代码:
```c++
#include <iostream>
#include <random>
double monte_carlo_volume(int n) {
int count = 0;
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution<double> dis(-1.0, 1.0);
for (int i = 0; i < n; i++) {
double x = dis(gen);
double y = dis(gen);
double z = dis(gen);
if (x * x + y * y + z * z <= 1.0) {
count++;
}
}
return static_cast<double>(count) / n * 8.0;
}
int main() {
int n = 1000000;
double volume = monte_carlo_volume(n);
std::cout << "半径为 1 的球体体积约为:" << volume << std::endl;
return 0;
}
```
该代码使用了 100 万次实验来估计球体体积,每次实验生成三个随机数,如果这三个随机数所代表的点在球体内,则计数器加 1。最后计算体积的估计值为计数器值除以实验总数再乘以 8,因为只计算了球体的一个半球。最后输出估计的球体体积。
阅读全文