用python、java、c++写一个用蒙特卡洛法探求圆周率的程序
时间: 2024-03-22 08:42:06 浏览: 88
计算圆周率的java程序
5星 · 资源好评率100%
好的,以下是分别使用 Python、Java 和 C++ 编写的使用蒙特卡洛方法求解圆周率的程序:
Python:
``` python
import random
# 模拟次数
n = 1000000
# 计数器
count = 0
for i in range(n):
# 在 [0, 1] 范围内随机生成两个数,作为点的坐标
x = random.uniform(0, 1)
y = random.uniform(0, 1)
# 判断点是否在圆内,如果是,则计数器加 1
if x**2 + y**2 <= 1:
count += 1
# 计算圆的面积
area = count / n
# 计算圆周率
pi = area * 4
print("计算结果:圆周率约为", pi)
```
Java:
``` java
import java.util.Random;
public class MonteCarloPi {
public static void main(String[] args) {
// 模拟次数
int n = 1000000;
// 计数器
int count = 0;
Random rand = new Random();
for (int i = 0; i < n; i++) {
// 在 [0, 1] 范围内随机生成两个数,作为点的坐标
double x = rand.nextDouble();
double y = rand.nextDouble();
// 判断点是否在圆内,如果是,则计数器加 1
if (x*x + y*y <= 1) {
count++;
}
}
// 计算圆的面积
double area = (double)count / n;
// 计算圆周率
double pi = area * 4;
System.out.println("计算结果:圆周率约为 " + pi);
}
}
```
C++:
``` cpp
#include <iostream>
#include <random>
using namespace std;
int main() {
// 模拟次数
int n = 1000000;
// 计数器
int count = 0;
random_device rd;
default_random_engine rand(rd());
uniform_real_distribution<double> dist(0, 1);
for (int i = 0; i < n; i++) {
// 在 [0, 1] 范围内随机生成两个数,作为点的坐标
double x = dist(rand);
double y = dist(rand);
// 判断点是否在圆内,如果是,则计数器加 1
if (x*x + y*y <= 1) {
count++;
}
}
// 计算圆的面积
double area = (double)count / n;
// 计算圆周率
double pi = area * 4;
cout << "计算结果:圆周率约为 " << pi << endl;
return 0;
}
```
以上三个程序的实现思路是一样的,都是使用蒙特卡洛方法来计算圆周率。其中,Python 和 Java 的实现比较类似,而 C++ 的实现略有不同,因为它使用了 C++11 中的随机数库。
阅读全文