蒙特卡洛算法代码

angetenar / 2023-08-21 / 原文

蒙特卡洛算法是一个常用的解题方法之一。以下是一个简单的蒙特卡洛求解圆周率π的代码示例:

点击查看代码
import random

def monte_carlo_pi(n):
    count = 0
    total = n
    
    for _ in range(n):
        # 在单位正方形内随机生成点的坐标
        x = random.uniform(0, 1)
        y = random.uniform(0, 1)
        
        # 判断点是否在圆内
        if x**2 + y**2 <= 1:
            count += 1
    
    # 计算圆周率
    pi = 4 * count / total
    return pi

# 示例输入数据
n = 1000000

# 调用蒙特卡洛算法函数
result = monte_carlo_pi(n)

# 输出结果
print("通过蒙特卡洛算法求得的圆周率π的近似值:", result)

在上述代码中,我们使用蒙特卡洛算法来估计圆周率π的值。你可以根据具体问题的要求进行以下修改:

  1. 输入数据:根据具体问题,修改n的值,表示生成的点的数量。

2.点的生成范围:在示例代码中,我们假设点是均匀分布在单位正方形内,可以根据具体问题进行调整。

3.判断点是否在圆内:通过计算点到坐标原点的距离是否小于等于1来判断点是否在圆内。

4.估计圆周率:根据蒙特卡洛算法的原理,通过统计圆内的点数和总点数的比例,可以得到圆的面积与正方形面积的比例,从而估计圆周率。

注意,以上代码仅为蒙特卡洛算法求解圆周率π的示例,实际问题可能需要更多的自定义代码和计算过程,请根据具体情况进行相应的调整。在设计蒙特卡洛算法时,需要注意样本的随机性和数量的选择,以及根据具体问题确定如何利用样本结果进行估计或推断。