【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}")

运行结果:

相关推荐
近津薪荼3 分钟前
优选算法——滑动窗口1(单调性)
c++·学习·算法
diediedei5 分钟前
嵌入式C++驱动开发
开发语言·c++·算法
2301_765703149 分钟前
工具、测试与部署
jvm·数据库·python
Jackson@ML9 分钟前
Kimi K2.5横空出世!K2.5模型功能详解
python·大语言模型·kimi
燃于AC之乐10 分钟前
《算法实战笔记》第10期:六大算法实战——枚举、贪心、并查集、Kruskal、双指针、区间DP
算法·贪心算法·图论·双指针·区间dp·二进制枚举
BYSJMG14 分钟前
计算机毕设选题推荐:基于大数据的癌症数据分析与可视化系统
大数据·vue.js·python·数据挖掘·数据分析·课程设计
diediedei14 分钟前
高性能计算通信库
开发语言·c++·算法
蒸蒸yyyyzwd15 分钟前
算法学习笔记
笔记·算法
我材不敲代码22 分钟前
Python爬虫介绍——简单了解一下爬虫
开发语言·爬虫·python
练习时长一年24 分钟前
LeetCode热题100(颜色分类)
算法·leetcode·职场和发展