蒙特卡洛算法
蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。
将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解
1 #蒙特卡洛算法求圆周率 2 #使用1*1的正方形,齐内有个1/4的圆,比较落在圆中的点和落在整个正方形上的点,计算比值,进而计算圆周率 3 import random 4 import math 5 6 def main(): 7 n=int(input('迭代次数:')) 8 total=0 9 for i in range(n): 10 x,y=random.random(),random.random()#产生一个随机点 11 if math.sqrt(x**2+y**2)<1.0: 12 total+=1 13 mypi=4.0*total/n 14 print(mypi) 15 print(math.pi) 16 print(abs(math.pi-mypi)/math.pi) 17 18 main() 19 ------------------------------------------------------------ 20 迭代次数:100 21 3.36 22 3.141592653589793 23 0.06952121757753665
1 from random import random 2 n=10**6 3 print(sum(1 if random()**2+random()**2<1 else 0 for i in range(n))*4.0/n) 4 5 ------------------------------------------------------ 6 3.14034