Python作业3

使用蒙特卡罗方法完成图形绘制。

分析问题:
定义蒙特卡罗模拟函数:
创建一个名为monte_carlo_circle的函数,该函数接受一个参数num_points,表示要生成的随机点的数量。
初始化点的列表:
创建四个空列表:points_x、points_y用于存储所有随机点的x和y坐标;inside_x、inside_y用于存储位于单位圆内的点的x和y坐标。
生成随机点并检查是否在单位圆内:
使用for循环生成num_points个随机点。
在每次循环中,使用random.uniform(-1, 1)生成一个介于-1和1之间的随机浮点数,分别作为点的x和y坐标。
将生成的点的坐标添加到points_x和points_y列表中。
检查点是否位于单位圆内,即检查x2 + y2是否小于等于1。如果是,则将该点的坐标添加到inside_x和inside_y列表中。
绘制所有随机点:
使用matplotlib的scatter函数绘制所有随机点,其中圆外的点用一种颜色(如蓝色)表示,圆内的点用另一种颜色(如红色)表示。
设置图形的标题、图例和坐标轴范围。
显示图形:
使用plt.show()函数显示绘制的图形。
执行函数:
调用monte_carlo_circle函数,并传入要生成的随机点的数量num_points。

点击查看代码
import random
import matplotlib.pyplot as plt

# 蒙特卡罗方法绘制单位圆
def monte_carlo_circle(num_points):
    points_x = []
    points_y = []
    inside_x = []
    inside_y = []

    # 生成随机点并检查它们是否在单位圆内
    for _ in range(num_points):
        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)
        points_x.append(x)
        points_y.append(y)
        if x ** 2 + y ** 2 <= 1:
            inside_x.append(x)
            inside_y.append(y)

    # 绘图
    plt.figure(figsize=(6, 6))
    plt.scatter(points_x, points_y, color='blue', s=1, label='Random Points')
    plt.scatter(inside_x, inside_y, color='red', s=1, label='Inside Circle')
    plt.gca().set_aspect('equal', adjustable='box')
    plt.xlim(-1.5, 1.5)
    plt.ylim(-1.5, 1.5)
    # plt.title('Monte Carlo Simulation of a Circle')
    plt.legend()
    plt.show()

# 执行函数
num_points = 200*200
monte_carlo_circle(num_points)

相关蒙特卡罗方法的资料学习:
https://blog.csdn.net/qq_57143062/article/details/141108249?fromshare=blogdetail&sharetype=blogdetail&sharerId=141108249&sharerefer=PC&sharesource=m0_75074214&sharefrom=from_link

posted on 2025-04-21 17:19  encore弥塔  阅读(19)  评论(0)    收藏  举报