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


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

文章插图
 
> Figure 1: The Monte Carlo Simulation method is used in many industries, from the stock market to finance, energy, banking, and other forecasting models. | Source: Pexels
Python 的蒙特卡罗仿真方法和应用程序的深入教程
作者:普拉蒂克·舒克拉,罗伯托·伊里翁多
什么是蒙特卡罗模拟?蒙特卡罗方法是一种使用随机数和概率来解决复杂问题的技术 。Monte Carlo 模拟(或概率模拟)是一种用于了解金融部门、项目管理、成本和其他预测机器学习模型中风险和不确定性影响的技术 。
风险分析是我们几乎做出的每一个决策的一部分,因为我们不断面对生活中的不确定性、模糊性和多变性 。此外,尽管我们拥有前所未有的信息获取机会,也无法准确预测未来 。
蒙特卡罗模拟使我们能够查看决策的所有可能结果并评估风险影响,从而在不确定性下做出更好的决策 。
在这篇文章中,我们将通过五个不同的例子来了解蒙特卡罗模拟方法 。
资源:谷歌科拉布实施 |Github
应用:
  • · 金融
  • · 能源
  • · 制造
  • · 工程
  • · 研发
  • · 保险
  • · 石油和天然气
  • · 运输
  • · 环境
  • · 其他
例子:· 硬币翻转示例
· 使用圆和方形估算 PI
· 蒙蒂大厅问题
· 布冯投针的问题
· 为什么庄家总是赢
1. 硬币翻转示例:公平硬币的正面概率为1/2 。然而,有什么办法我们可以用实验来证明吗?在此示例中,我们将使用 Monte-Carlo 方法以 5000 次迭代方式模拟硬币翻转,以找出为什么正面或反面的概率始终为 1/2 。如果我们重复这个硬币翻转很多,很多次,那么我们可以达到更高的精度,一个确切的答案,我们的概率值 。
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 2: Heads and tails, mathematical representation.
 
翻转硬币时:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 3: Formula for heads and tails coin example.
 
接下来,我们将用蒙特卡罗方法以实验方式证明这个公式 。
Python 实现:· 导入所需的库:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 4: Import the required libraries for our coin flipping example.
 
1. 硬币翻转功能:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 5: A simple function randomizing the results between 0 and 1, 0 for heads, and 1 for tails.
 
2. 检查函数的输出:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 6: Running the function of coin_flip()
 
3. 主函数:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 7: Calculating the probability and Appending the probability values to the results.
 
4. 调用主函数:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 8: Calling the Monte Carlo main function, along with plotting final values.
 
如图 8 所示,我们显示 5000 次迭代后,获得反面的概率为 0.502 。因此,我们如何使用蒙特卡罗模拟来实验地找到概率 。
2. 使用圆和正方形估算 PI:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 9: Simple area of a circle and of a square.
 
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 10: Calculation of the area of a circle and square respectively.
 
为了估计 PI 的值,我们需要正方形的面积和圆的面积 。要查找这些区域,我们将随机在曲面上放置点,并计算落在圆内的点和位于正方形内的点 。这将给我们估计他们的面积 。因此,我们将使用点计数作为区域,而不是使用实际区域 。
在下面的代码中,我们使用 Python 的海龟模块来查看点的随机放置 。
Python 实现:1.导入所需的库:
用Python实现蒙特卡罗模拟的详细教程

文章插图
> Figure 10: Importing required libraries for our π example.
 
2.可视化作图


推荐阅读