蒙特卡洛(Monte Carlo)方法求PI值

蒙特卡洛(Monte Carlo)方法,又称为随机抽样或统计试验方法,是以概率和统计理论方法为基础的一种计算方法.

# 统计原理

蒙特卡洛(Monte Carlo)方法本质是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。它将所求解的问题同一定的概率模型相联系,以获得问题的近似解。

利用圆与其外接正方形面积之比为pi/4的关系,通过产生大量均匀分布的二维点,计算落在单位圆和单位正方形的数量之比再乘以4便得到pi的近似值,即4*(圆内点数/总点数)。样本点越多,计算出的数据将会越接近真识的pi.


<iframe style="border: 0;" width="100%" height="400px"
        src="https://www.tuu14.com/embed/monte-carlo-find-pi"></iframe>
Show Copy

# 随机data生成

let inCount = 0, total = 35000;
const data = Array(total).fill(1).map(_ => {
    const [x, y] = [Math.random(), Math.random()];
    const dis = Math.sqrt(x ** 2 + y ** 2)
    let color = '#c4ebad';
    if (dis <= 1) {
        color = '#3fb1e3'
        inCount += 1
    }
    return {
        value: [x, y],
        itemStyle: {
            color,
            opacity: 0.8
        }
    }
})

# echarts 配置


const opt = {
    xAxis: {},
    yAxis: {},
    grid: {
        width: '340px',
        height: '340px',
        left: '35%',
    },
    title: {
        subtext: `模拟${total}个点求得PI值:${(4 * inCount / total).toFixed(6)}`,
        bottom: 0,
        right: 0
    },
    series: [
        {
            symbolSize: 2,
            data,
            type: 'scatter'
        }
    ],
    animationDuration: 5000,
    animationEasingUpdate: 'quinticInOut'
}

蒙特卡洛方法并没有什么高深的理论支撑,如果一定要说有理论也就只有概率论或统计学中的大数定律了。蒙特卡洛的基本原理简单描述是先大量模拟,然后计算一个事件发生的次数,再通过这个发生次数除以总模拟次数,得到想要的结果。蒙特卡洛方法当然也可以运用在很多领域,如金融,工程,物理,生物医学等等。

# 相关资料

实例展示 tuu14.com (opens new window)

最近更新
01
echarts扇形模拟镜头焦距与可视化角度示意图
03-10
02
vite插件钩子
03-02
03
vite的依赖预构建
02-13
更多文章>