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)

浙公网安备 33010602011771号