是一种以统计抽样理论为基础,以计算为手段,通过有关随机变量的统计抽样检检验或随机模拟,以求解问题近似解的一种计算方法。
求解的步骤:
- 统计抽样
- 随机模拟
- 计算手段
- 近似解
理论方法:大数定律
与拉斯维加斯算法的区别:蒙特卡洛算法是尽量找到最优解,不要求一定是最优解(挑苹果问题);而拉斯维加斯算法必须要给出最优解,如果不是最优解,那么所得到的结果就没有意义(开锁问题)。
方法举例:
- 圆周率π的计算

import random
if __name__ == "__main__":
count = 0
for i in range(100000):
x = random.random()
y = random.random()
if (x - 0.5)**2 + (y - 0.5)**2 <= 0.25:
count += 1
pi = 4 * (count / 100000)
print("%.2f" % pi)
- 蒙特卡洛方法求定积分

import random
if __name__ == "__main__":
count = 0
for i in range(100000):
x = random.uniform(0, 3)
y = random.uniform(0, 9)
if x**2 >= y:
count += 1
print("%.1f" % (27 * count / 100000))
方法总结:
