蒙特卡罗方法 python 实现2

简介:

如果不考虑作图,这里的两个例子可以改写成下面的样子:

求圆周率

import random

'''
蒙特卡罗模拟

投点法计算圆周率
'''


# 投点游戏
def play_game():
    # 圆
    r = 1.0         # 半径
    a, b = (0., 0.) # 圆心
    
    # 正方形区域边界
    x_min, x_max = a-r, a+r
    y_min, y_max = b-r, b+r
    
    # 在 正方形 区域内随机投点
    x = random.uniform(x_min, x_max) # 均匀分布
    y = random.uniform(y_min, y_max)
    
    # 计算点到圆心距离
    d = (x-a)**2 + (y-b)**2
    
    # 根据落在圆内与否,返回1,0(为方便计数)
    return [0, 1][d<r]


# 游戏次数
n = 100000

# 蒙特卡罗方法,模拟 n 次游戏
pi = 4.0 * sum((play_game() for _ in range(n))) / n  # 4 倍频率近似于圆周率
print('pi: ', pi)

求定积分

import random

'''
蒙特卡罗模拟

投点法计算函数 y=x^2在[0,1]内的定积分
'''

# 函数 y=x^2
def f(x):
    return x**2

# 投点游戏
def play_game():
    
    # 矩形区域边界
    x_min, x_max = 0, 1
    y_min, y_max = 0, 1
    
    # 在 矩形 区域内随机投点
    x = random.uniform(x_min, x_max) # 均匀分布
    y = random.uniform(y_min, y_max)
    
    # 根据点落在函数 y=x^2图像下方与否,返回1,0(为方便计数)
    return [0, 1][y<f(x)]


# 游戏次数
n = 100000

# 蒙特卡罗方法,模拟 n 次游戏
integral = sum((play_game() for _ in range(n))) / n  # 频率近似于定积分
print('integral: ', integral)
本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/6718971.html ,如需转载请自行联系原作者
相关文章
|
8天前
|
数据可视化 PyTorch Serverless
Python 性能分析的几个方法,找到你代码中的那个她
我们在编写了一个脚本在笔记本上处理一些数据,然后去喝杯咖啡或者上了个厕所,15分钟后回来时发现进度才完成不到10%。 我们的脑袋里面就会发问:为什么这么慢?究竟是在哪个部分是慢的?是读取数据、处理数据还是保存数据?如何让它变快?它真的很慢吗? 有了这个疑问我们尝试去解决这个问题,下面我们介绍几个 python 性能分析的工具。
|
9天前
|
算法 计算机视觉 索引
python---OpenCv(二),背景分离方法较有意思
python---OpenCv(二),背景分离方法较有意思
|
12天前
|
SQL 数据库 Python
【Python】已完美解决:(executemany()方法字符串参数问题)more placeholders in sql than params available
【Python】已完美解决:(executemany()方法字符串参数问题)more placeholders in sql than params available
10 1
|
6天前
|
数据可视化 Python
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
时间序列分析是一种统计方法,用于分析随时间变化的数据序列。在金融、经济学、气象学等领域,时间序列分析被广泛用于预测未来趋势、检测异常值、理解周期性模式等。在Python中,`statsmodels`模块是一个强大的工具,用于执行各种时间序列分析任务。
|
6天前
|
机器学习/深度学习 缓存 安全
Python标准库中的`str`类型有一个`translate()`方法,它用于替换字符串中的字符或字符子集。这通常与`str.maketrans()`方法一起使用,后者创建一个映射表,用于定义哪些字符应该被替换。
Python标准库中的`str`类型有一个`translate()`方法,它用于替换字符串中的字符或字符子集。这通常与`str.maketrans()`方法一起使用,后者创建一个映射表,用于定义哪些字符应该被替换。
|
11天前
|
数据采集 JSON API
深入解析:抖音视频标题的Python爬虫提取方法
深入解析:抖音视频标题的Python爬虫提取方法
|
22天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:策略梯度方法
使用Python实现深度学习模型:策略梯度方法
16 0
|
22天前
|
关系型数据库 MySQL 数据库
Python中使用MySQL模糊查询的方法
(1)同样需要将your_username、your_password、your_database替换为我们的MySQL数据库的实际用户名、密码和数据库名。 (2)在mysql.connector.connect()中,我们没有直接指定字符集和游标类型,因为mysql-connector-python的默认配置通常已经足够好。但是,如果需要,我们可以添加这些配置选项。 (3)使用cursor.close()和cnx.close()来确保游标和连接都被正确关闭。 (4)mysql-connector-python也支持使用上下文管理器(即with语句)来自动管理游标和连接的关闭,但这需要创建一个
|
22天前
|
数据可视化 Python
详尽分享用Python进行时间序列预测的7种方法
详尽分享用Python进行时间序列预测的7种方法
|
22天前
|
Web App开发 JSON 程序员
老程序员分享:Python有哪些好用的语言翻译方法
老程序员分享:Python有哪些好用的语言翻译方法