【Hadoop】-拓展:蒙特卡罗算法求PI的基础原理[10]

Monte Carlo蒙特卡罗算法(统计模拟法)

Monte Carlo算法的基本思想是:以模拟的"实验"形式、以大量随机样本的统计形式,来得到问题的求解。比如,求圆周率,以数学的方式是非常复杂的,但是我们可以以简单的形式去求解:

如图,我们在正方形内,随机落点,统计落在1/4圆内的点和总店数量的比例即可得到1/4的PI,最终乘以4即可得到PI。比如,红色点的数量比全部点的数量,结果是0.756,那么乘以4就可以得到3.06,3.06就是求得的PI。

  • 所以,此方法,需要大量的样本(落点),样本越多越精准。

示例代码

如下,以python语言实现的蒙特卡罗求PI

复制代码
import random
sample_num = int(input("请输入样本数:"))
inner_point = 0
pi = 0
for i in range(sample_num):
    a = random.uniform(0,1)
    b = random.uniform(0,1)
    if a*a + b*b <= 1:
        inner_point = inner_point + 1
pi = (inner_point / sample_num) * 4
print(f"样本数:{sample_num},pi近似等于{pi}")

运行结果:

相关推荐
haoly198920 分钟前
数据结构和算法篇-线性查找优化-移至开头策略
数据结构·算法·移至开头策略
猫头虎2 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
沿着路走到底2 小时前
python 基础
开发语言·python
烛阴3 小时前
武装你的Python“工具箱”:盘点10个你必须熟练掌握的核心方法
前端·python
学Linux的语莫4 小时前
机器学习数据处理
java·算法·机器学习
earthzhang20214 小时前
【1007】计算(a+b)×c的值
c语言·开发语言·数据结构·算法·青少年编程
杨枝甘露小码4 小时前
Python学习之基础篇
开发语言·python
我是华为OD~HR~栗栗呀5 小时前
23届考研-Java面经(华为OD)
java·c++·python·华为od·华为·面试
小蕾Java5 小时前
PyCharm 软件使用各种问题 ,解决教程
ide·python·pycharm
Lucky_Turtle5 小时前
【PyCharm】设置注释风格,快速注释
python