蒙特卡罗方法 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)
时间: 2024-09-01 12:51:59

蒙特卡罗方法 python 实现2的相关文章

蒙特卡罗方法 python 实现

蒙特卡罗(Monte Carlo)方法的精髓:用统计结果去计算频率,从而得到真实值的近似值. 一.求圆周率的近似值,采用 投点法 import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Circle # 投点次数 n = 10000 # 圆的信息 r = 1.0 # 半径 a, b = (0., 0.) # 圆心 # 正方形区域边界 x_min, x_max = a-r, a+r y_mi

蒙特卡罗方法入门

本文通过五个例子,介绍蒙特卡罗方法(Monte Carlo Method). 一.概述 蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 它非常强大和灵活,又相当简单易懂,很容易实现.对于许多问题来说,它往往是最简单的计算方法,有时甚至是唯一可行的方法. 它诞生于上个世纪40年代美国的"曼哈顿计划",名字来源于赌城蒙特卡罗,象征概率. 二.π的计算 第一个例子是,如何用蒙特卡罗方法计算圆周率π. 正方形内部有一个相切的圆,它们的面积之比是π/4

《深度学习导论及案例分析》一2.12马尔可夫链蒙特卡罗方法

2.12马尔可夫链蒙特卡罗方法 在统计学中,马尔可夫链蒙特卡罗方法是一类根据概率分布进行采样的方法,起源于物理学科[133].这类方法以构造一个马尔可夫链为基础,其期望分布(desired distribution)就是平衡分布(equilibrium distribution).极限分布(limiting distribution)或稳态分布(stationary disrtibution).经过若干步骤之后,马尔可夫链的状态便被用作期望分布的一个样本.样本的质量随着步骤数目的增加而不断提高,

蒙特卡罗方法验证凯利公式

说明 本文受知乎陈小米启发而写.有兴趣的朋友可以移步这里. 本文的代码完全是本人所撸. 问题描述 假想一个游戏.赢的概率是60%,输的概率40%.入场费随意交.如果赢了获得2倍的入场费金额(1赔1),输则输掉入场费.小米有1000元做本金,请问小米每次给多少入场费,理论上100次游戏后几何期望收益能最大? [本人的疑问]为何这里考虑几何期望,而不是数学期望?[已解决,见代码注释!] 凯利公式 \[f=p-\frac{q}{b}\] 不多说,上代码. 完整代码 import pandas as p

方法-python中的类型怎么对应java中的byte[]

问题描述 python中的类型怎么对应java中的byte[] 场景是这个样子的我这边要实现一个接口 服务器端是java做的客户端是python做的服务器端向客户端提供了一个login的接口需要客户端实现login需要给服务器返回一个byte[] 的值 但是python中貌似没有byte这个类型我该怎么处理?bytearray 这个方法试过了 貌似不行 在线等好心人 求大神给我点一下啊 卡到这里很长时间了很紧 啊 解决方案 https://gist.github.com/igniteflow/1

方法-Python 调用sqlserve数据库存储过程,有谁知道怎么用吗?

问题描述 Python 调用sqlserve数据库存储过程,有谁知道怎么用吗? 在网上找的例子比较少?有没有详细的使用方法,请大神帮帮忙,急用,谢谢! 解决方案 http://stackoverflow.com/questions/28635671/using-stored-procedurespython-ms-sql#

方法-python继承的一个简单问题

问题描述 python继承的一个简单问题 python为什么我继承了Threading的Thread方法, class myThread(threading.Thread): def __init__(self,threadname): threading.Thread.__init__(self,name=threadname) 这就是问题为什么还要 调用初始化一下?. 初始化,能达到什么效果,就是这句话有什么用途?或者 我不初始化有什么差别? java里面 不需要这样呀?python这样写是

方法-Python如何调用C++dllku库。

问题描述 Python如何调用C++dllku库. 现在是报着错,但不知道怎么处理,百度网上的说方法1是调用方式,2是参数类型 但不知道怎么搞,求高手指教 我改成这样了就可以运行了,请问这个和我原来写的有什么区别呢? 解决方案 首先谢谢你的提示,我在修改后报出这个错误,百度未得,还请您指教 解决方案二: 用ctypes方式调用动态库,然后注意参数类型 Python调用windows下DLL详解 - ctypes库的使用

判断网页编码的方法python版_python

在web开发的时候我们经常会遇到网页抓取和分析,各种语言都可以完成这个功能.我喜欢用python实现,因为python提供了很多成熟的模块,可以很方便的实现网页抓取. 但是在抓取过程中会遇到编码的问题,那今天我们来看一下如何判断网页的编码: 网上很多网页的编码格式都不一样,大体上是GBK,GB2312,UTF-8等. 我们在获取网页的的数据后,先要对网页的编码进行判断,才能把抓取的内容的编码统一转换为我们能够处理的编码,避免乱码问题的出现. 下面介绍两种判断网页编码的方法: 总结:第二个方法很准