错误的输入分布
在本练习中,您将继续使用圆周率的示例:

如果把输入的概率分布从连续均匀分布(random.uniform())改成离散均匀分布(random.randint())会怎样?结果将不可靠,因为 random.randint() 抽样的是离散整数,而 random.uniform() 抽样的是连续浮点数。
请关注该模拟生成的圆周率估计值。由于选择了不正确的概率分布,它的精度不会很高!为蒙特卡罗模拟选择正确的概率分布至关重要。我们将在后续课程中更详细地介绍不同的分布,帮助您在今后的练习中有把握地做出正确选择。
已为您导入 random。
本练习是课程的一部分
Python 中的蒙特卡洛模拟
练习说明
- 使用
random.randint()(而不是视频中使用的正确函数random.uniform())在区间 -1 到 1 内为x和y抽样坐标。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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)