错误的确定性计算
在本练习和下一个练习中,您将基于视频中的圆周率计算进行尝试,进一步理解模拟流程中每一步的重要性。
回顾一下:用于估计圆周率的模拟会生成随机点 $(x, y)$,其中 \(x\) 和 \(y\) 的取值范围是 -1 到 1,如下图所示。

如果您错误地更改了确定性计算(也就是判断某个点是否应加入 circle_points 的那一步),会发生什么?这将如何影响最终结果?您会从得到的离谱圆周率数值中看到:在蒙特卡罗模拟中,正确设定确定性计算至关重要!
已为您导入 random。
本练习是课程的一部分
Python 中的蒙特卡洛模拟
练习说明
- 对于任意点,只要其到原点的距离小于 0.75(而不是视频中演示的一的距离),就递增
circle_points。
交互式实操练习
通过完成这段示例代码来试试这个练习。
n = 10000
circle_points = 0
square_points = 0
for i in range(n):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
dist_from_origin = x**2 + y**2
# Increment circle_points for any point with a distance from origin of less than .75
if ____:
circle_points += 1
square_points += 1
pi = 4 * circle_points / square_points
print(pi)