开始使用免费开始使用

错误的确定性计算

在本练习和下一个练习中,您将基于视频中的圆周率计算进行尝试,进一步理解模拟流程中每一步的重要性。

回顾一下:用于估计圆周率的模拟会生成随机点 $(x, y)$,其中 \(x\) 和 \(y\) 的取值范围是 -1 到 1,如下图所示。

A graph of a circle inside a square with randomly sampled points

如果您错误地更改了确定性计算(也就是判断某个点是否应加入 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)
编辑并运行代码