用Python实现蒙特卡罗模拟的详细教程( 二 )

用Python实现蒙特卡罗模拟的详细教程
文章插图
> Figure 11: Drawing the figures.
 
3. 初始化一些必需的数据:

用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 12: Initializing data values.
 
4. 主函数:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 13: Implementing the main function.
 
5. 绘制数据:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 14: Plotting the data values.
 
6. 输出:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 15: π approximations using the Monte Carlo methodology.
 
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 16: Data visualization of the values.
 
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 17: Data visualization of the values.
 
如图 17 所示,我们可以看到,在 5000 次迭代之后,我们可以获得 PI 的近似值 。此外,请注意,随着迭代次数的增加,估计误差也呈指数级下降 。
用Python实现蒙特卡罗模拟的详细教程

文章插图
 
通过 Python 中的代码示例,查看初学者的机器学习算法概述 。
3. 蒙蒂大厅问题:假设你在游戏表演,你可以选择选择三扇门之一:一扇门后面是一辆车;在其他门后面,山羊 。你选一扇门,让我们说门1,主人,谁知道门后面是什么,打开另一扇门,说门3,它有一只山羊 。然后主人问你:你是要坚持自己的选择还是选择另一扇门?[1]
切换您选择的门对您有利吗?
根据概率,事实证明,切换门对我们有利 。让我们了解如何:
最初,对于所有三个门,获得汽车的概率 (P) 是相同的 (P = 1/3) 。
用Python实现蒙特卡罗模拟的详细教程

文章插图
 
> Figure 18: A simulation of the three gates for our game show, showcasing each of the possible outcomes.
现在假设参赛者选择门 1 。接下来,主人打开第三扇门,它有一只山羊 。接下来,主持人问参赛者是否想换门?
我们将了解为什么切换门更有利:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 19: A figurative outcome for the door gameshow.
 
在图 19 中,我们可以看到主机打开车门 3 后,最后两扇门有车的概率增加至 2/3 。现在我们知道第三扇门有一只山羊,第二扇门有车的概率增加到2/3 。因此,切换门更有利 。
 
Python 实现:1.导入所需的库:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 20: Importing required libraries for our game show example.
 
2. 初始化某些数据:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 21: Initializing the doors and empty lists to store the probability values.
 
3. 主函数:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 22: Implementing the main function with a Monte Carlo Simulation method.
 
4. 调用主函数:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 23: Calling the main function of our game show example, and interesting 1000 times.
 
5. 输出:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 24: Approximate winning probabilities to sticking with your choice or switching doors.
在图 24 中,我们显示 1000 次迭代后,如果我们切换门,获胜概率为 0.669 。因此,我们相信,在此示例中切换门对我们的优势是管用 。
4. 布冯投针的问题:1777年[2][3],法国贵族乔治-路易斯·勒克莱克(Comte de Buffon)发布了以下问题 。
假设我们把一根短针掉在有横条的纸上——针头躺在穿过其中一条线的位置的概率是多少?
概率取决于被统治纸张的线之间的距离 (d),它取决于我们掉落的针的长度 (l),或者更确切地说,它取决于比率 l/d 。对于此示例,我们可以将针头解释为 l ≤ d 。简而言之,我们的目的是针不能同时穿过两条不同的线 。令人惊讶的是,布冯的针头问题的答案涉及PI 。


推荐阅读