蒙特卡罗模拟 python Monte Carlo Simulation

1. 蒙特卡罗模拟

与普通预测模型不同,蒙特卡罗模拟根据估计值范围与一组固定输入值来预测一组结果。换句话说,蒙特卡洛模拟通过利用概率分布(例如均匀分布或正态分布),为任何具有固有不确定性的变量构建可能结果的模型。然后,它一遍又一遍地重新计算结果,每次都使用最小值和最大值之间的一组不同的随机数。在典型的蒙特卡罗实验中,可以重复此练习数千次以产生大量可能的结果。

由于其准确性,蒙特卡罗模拟也可用于长期预测。随着输入数量的增加,预测数量也会增加,使您能够更准确地预测更远的时间结果。当蒙特卡罗模拟完成时,它会产生一系列可能的结果以及每个结果发生的概率。

蒙特卡洛模拟的一个简单示例是考虑计算掷出两个标准骰子的概率。骰子有 36 种组合。基于此,您可以手动计算特定结果的概率。使用蒙特卡罗模拟,您可以模拟掷骰子 10,000 次(或更多),以实现更准确的预测。

无论您使用什么工具,蒙特卡罗技术都涉及三个基本步骤:

  1. 设置预测模型,确定要预测的因变量和驱动预测的自变量(也称为输入、风险或预测变量)。
  2. 指定自变量的概率分布。使用历史数据和/或分析师的主观判断来定义可能值的范围并为每个值分配概率权重。
  3. 重复运行模拟,生成自变量的随机值。这样做,直到收集到足够的结果来构成近乎无限数量的可能组合的代表性样本。

您可以通过修改用于模拟数据的基础参数来运行任意数量的蒙特卡罗模拟。但是,您还需要通过计算方差和标准差(这是常用的散布度量)来计算样本内的变异范围。给定变量的方差是变量与其期望值之间的平方差的期望值。标准差是方差的平方根。通常,方差越小越好。

2. Python 蒙特卡罗模拟计算 π \pi π

# import libraries
import numpy as np# initialize variables
n_simulations = 100000
n_points_circle = 0
n_points_square = 0# create lists to store x and y values
l_xs = []
l_ys = []# loop n_simulations times
for _ in range(n_simulations):# x is randomly drawn from a continuous uniform distritbuionx = np.random.uniform(-1, 1)# store x in the listl_xs.append(x)# y is randomly drawn from a continuous uniform distributiony = np.random.uniform(-1, 1)# store y in the listl_ys.append(y)# loop n_simulations times
for i in range(n_simulations):# calculate the distance between the point and the origindist_from_origin = l_xs[i] ** 2 + l_ys[i] ** 2# if the distance is smaller than or equal to 1, the point is in the circleif dist_from_origin <= 1:n_points_circle += 1# by definition of the uniform distribution, the point is in the squaren_points_square += 1# estimate the value of pi
pi = 4 * n_points_circle / n_points_square
print(pi)

3. Reference

[1] https://www.ibm.com/topics/monte-carlo-simulation
[2] https://medium.com/@whystudying/monte-carlo-simulation-with-python-13e09731d500

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/472358.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html从零开始8:css3新特性、动画、媒体查询、雪碧图、字体图标【搬代码】

css3新特性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …

WordPress站点如何实现发布文章即主动推送到百度快速收录和普通收录?

我们在WordPress后台成功发布文章之后&#xff0c;如果靠搜索引擎来抓取的话&#xff0c;可能会比较慢&#xff0c;所以十分有必要将我们成功发布的文章马上提交到百度、必应等搜索引擎中。下面boke112百科就跟大家说一说WordPress站点如何实现发布文章即主动推送到百度快速收录…

FreeRTOS 计数信号量

一个二值信号量被用于让任务和中断进行同步。整个执行流程可以描 述为: 1. 中断产生。 2. 中断服务例程启动&#xff0c;给出信号量以使延迟处理任务解除阻塞。 3. 当中断服务例程退出时&#xff0c;延迟处理任务得到执行。延迟处理任务做的第一件事便是 获取信号量。 4. 延迟…

【图像分割 2023】BRAU-Net++

【图像分割 2023】BRAU-Net 论文题目&#xff1a;BRAU-Net: U-Shaped Hybrid CNN-Transformer Network for Medical Image Segmentation 中文题目&#xff1a; 论文链接&#xff1a;[2401.00722] BRAU-Net: U-Shaped Hybrid CNN-Transformer Network for Medical Image Segment…

IDEA 推荐插件

grep-console 输出日志换颜色 MybatisLogFormat 直接复制mybatis的日志成完整的SQL SequenceDiagram 生成时序图

武器级工具包 Immunity Canvas 7.26安装使用体验

介绍&#xff1a; Immunity Canvas工具包有集成化、自动化、简单化的特点&#xff0c;大幅降低了攻击门槛。该工具是Immunity公司的一款商业级漏洞利用和渗透测试工具&#xff0c;包含了480多个以上的漏洞利用&#xff0c;该工具工具本来并不开源&#xff0c;但是在2021年Immu…

Pytorch学习04_Transforms的使用

Structure的使用 在Pycharm的左下角可以点开structure&#xff0c;查看一些模块内的函数定义&#xff0c;没有的话&#xff0c;去到设置里搜索“keymap”,搜索”sturcture“&#xff0c;可以找到对应的快捷键 查看图片 from PIL import Image from torchvision import transfo…

【AIGC】大语言模型

大型语言模型&#xff0c;也叫大语言模型、大模型&#xff08;Large Language Model&#xff0c;LLM&#xff1b;Large Language Models&#xff0c;LLMs&#xff09; 什么是大型语言模型 大型语言模型&#xff08;LLM&#xff09;是指具有数千亿&#xff08;甚至更多&#xf…

springboot集成elk实现日志采集可视化

一、安装ELK 安装ELK组件请参考我这篇博客&#xff1a;windows下安装ELK(踩坑记录)_windows上安装elk教程-CSDN博客 这里不再重复赘述。 二、编写logstash配置 ELK组件均安装好并成功启动&#xff0c;进入到logstash组件下的config文件夹&#xff0c;创建logstash.conf配置…

Linux第一个小程序-进度条

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、回车和换行 二、行缓冲区概念 三、倒计时 四、进度条代码 版本一&#xff1a; ​编辑 版本二&#xff1a; 总结 前言 世上有两种耀眼的光芒&#xff0c;一…

Vue2学习第二天

Vue2 学习第二天 1. 数据绑定 Vue 中有 2 种数据绑定的方式&#xff1a; 单向绑定(v-bind)&#xff1a;数据只能从 data 流向页面。双向绑定(v-model)&#xff1a;数据不仅能从 data 流向页面&#xff0c;还可以从页面流向 data。 备注&#xff1a; 双向绑定一般都应用在表单…

Leecode之面试题消失的数字

一.题目及剖析 https://leetcode.cn/problems/missing-number-lcci/description/ 方法有很多,这里将两种时间复杂度为O(N)的方法 二.思路引入 第一种方法 先将0-n的总和求出来,在求出数组的总和,在做差就能得到消失的数字,不过要注意的是数据有可能溢出,这个方法很简单就不再…