1. 蒙特卡洛理论基础
蒙特卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由
于科学技术的 发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非
常重要的数值计算方法。是指使用随机数(或伪随机数)来解决很多计算问题的方法。与它
对应的是确定性算法。蒙特卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运
计算、量子热力学计算、空气动力学计算)等领域应用广泛。
蒙特卡罗方法于 20 世纪 40 年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”
计划的成员 S.M.乌拉姆 和 J.冯·诺伊曼首先提出。数学家冯·诺伊曼用驰名世界的赌城—
摩纳哥的 Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩。在这之前,蒙特卡罗
方法就已经存在。1777 年,法国数学家布丰提出用投针实验的方法求圆周率,这被认为是
蒙特卡罗方法的起源。
另外,拟蒙特卡洛算法在近几年也获得迅速发展。这种方法是用确定性的超均匀分布代
替蒙特卡洛算法中的随机数序列,对于某些特定问题计算速度比普通的蒙特卡洛算法高几百
倍。由于产生随机数的随机性,当我们用 N 个随机点以蒙特卡罗方法来求解具体的问题时,
其计算得到近似解的误差值有大有小,但是肯定有一个确定的平均值,即一些误差大于此值,
而其余误差小于此值。鉴于此,显然肯定存在这样的 N 个点,使得误差的绝对值不大于平
均值。如果我们能够构造这样的点集,就可以对原有的方法进行较大的改进。拟蒙特卡罗方
法就是至于此而提出的,它致力于构造其误差比平均误差显著要好的那种点集,而其求解形
式与蒙特卡罗方法一致,只不过所用的随机数不一样。用蒙特卡罗方法求解问题时,影响结
果好坏的主要是随机数序列的均匀性。而拟蒙特卡罗方法中的具有低偏差的一致分布点集较
伪随机数序列更为均匀,而且用拟蒙特卡罗方法求解得到的是真正的误差,避免了蒙特卡罗
方法得到概率误差的缺陷。由此可见用拟蒙特卡罗方法求解问题的关键是如何找到一个均匀
散布的点集。目前常用的点集有 GLP 点集(好格子点集,good lattice point set)、GP 点集(好点
集,good point set)、Halton 点集及其变体、Hammersley 点集等。蒙特卡洛方法的理论基础
是大数定律。大数定律是描述相当多次数重复试验的结果的定律,根据这个定律知道样本数
量越多,其平均就越趋近于真实值。
2. 蒙特卡洛的应用
(1)求圆周率
详见 python 实现蒙特卡洛方法计算π值.py
(2)股价预测
代码详见 Python 股价预测.py
python实现蒙特卡洛方法计算π值.py
Python股价预测.py