多台主机进行蒙特卡罗算法求pi 写出源代码
时间: 2023-07-22 11:37:46 浏览: 43
以下是一个简单的使用Python实现的多台主机并行计算蒙特卡罗算法求π的示例代码:
```python
import random
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
# 每个进程计算的试验次数
n_per_proc = 100000000
# 在每个进程中执行蒙特卡罗算法
count = 0
for i in range(n_per_proc):
x, y = random.uniform(-1, 1), random.uniform(-1, 1)
if x**2 + y**2 <= 1:
count += 1
# 汇总所有进程的计算结果
total_count = comm.reduce(count, op=MPI.SUM, root=0)
# 在主进程中计算π的近似值
if rank == 0:
pi_approx = 4 * total_count / (n_per_proc * size)
print("π的近似值为:", pi_approx)
```
这段代码使用了MPI(Message Passing Interface)库来实现进程间通信和协调,其中`n_per_proc`表示每个进程计算的试验次数,`count`表示每个进程中得到的符合条件的试验次数,`total_count`表示所有进程中符合条件的试验次数的总和。在主进程中,通过将所有进程的计算结果汇总后,计算出π的近似值并输出。