开始使用免费开始使用

错误的输入分布

在本练习中,您将继续使用圆周率的示例: A graph of a circle inside a square with randomly sampled points

如果把输入的概率分布从连续均匀分布(random.uniform())改成离散均匀分布(random.randint())会怎样?结果将不可靠,因为 random.randint() 抽样的是离散整数,而 random.uniform() 抽样的是连续浮点数。

请关注该模拟生成的圆周率估计值。由于选择了不正确的概率分布,它的精度不会很高!为蒙特卡罗模拟选择正确的概率分布至关重要。我们将在后续课程中更详细地介绍不同的分布,帮助您在今后的练习中有把握地做出正确选择。

已为您导入 random

本练习是课程的一部分

Python 中的蒙特卡洛模拟

查看课程

练习说明

  • 使用 random.randint()(而不是视频中使用的正确函数 random.uniform())在区间 -1 到 1 内为 xy 抽样坐标。

交互式实操练习

通过完成这段示例代码来试试这个练习。

n = 10000
circle_points = 0 
square_points = 0 
for i in range(n):
    # Sample the x and y coordinates from -1 to 1 using random.randint()
    x = ____
    y = ____
    dist_from_origin = x**2 + y**2
    if dist_from_origin <= 1:
        circle_points += 1
    square_points += 1
pi = 4 * circle_points / square_points
print(pi)
编辑并运行代码