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

求圆周率

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)

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

  1. 蒙特卡罗方法 python 实现

    蒙特卡罗(Monte Carlo)方法的精髓:用统计结果去计算频率,从而得到真实值的近似值. 一.求圆周率的近似值,采用 投点法 import numpy as np import matplotli ...

  2. MCMC(一)蒙特卡罗方法

    MCMC(一)蒙特卡罗方法 MCMC(二)马尔科夫链(待填坑) MCMC(三)M-H采样和Gibbs采样(待填坑) 作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Ca ...

  3. 增强学习(四) ----- 蒙特卡罗方法(Monte Carlo Methods)

    1. 蒙特卡罗方法的基本思想 蒙特卡罗方法又叫统计模拟方法,它使用随机数(或伪随机数)来解决计算的问题,是一类重要的数值计算方法.该方法的名字来源于世界著名的赌城蒙特卡罗,而蒙特卡罗方法正是以概率为基 ...

  4. 【RL系列】从蒙特卡罗方法步入真正的强化学习

    蒙特卡罗方法给我的感觉是和Reinforcement Learning: An Introduction的第二章中Bandit问题的解法比较相似,两者皆是通过大量的实验然后估计每个状态动作的平均收益. ...

  5. 蒙特卡罗方法、蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)初探

    1. 蒙特卡罗方法(Monte Carlo method) 0x1:从布丰投针实验说起 - 只要实验次数够多,我就能直到上帝的意图 18世纪,布丰提出以下问题:设我们有一个以平行且等距木纹铺成的地板( ...

  6. python的str,unicode对象的encode和decode方法, Python中字符编码的总结和对比bytes和str

    python_2.x_unicode_to_str.py a = u"中文字符"; a.encode("GBK"); #打印: '\xd6\xd0\xce\xc ...

  7. 白话马尔科夫链蒙特卡罗方法(MCMC)

    前言 你清茶园不是人待的地方! 里面的个个都是人才,说话又好听--就是我太菜了啥也听不懂,这次期中还考的贼**烂,太让人郁闷了. 最近课上讲这个马尔科夫链蒙特卡罗方法,我也学得一塌糊涂.这时我猛然想起 ...

  8. Python入门习题5.蒙特卡罗方法计算圆周率

    #CalPi.py from random import random from math import sqrt from time import clock DARTS = 10000000 hi ...

  9. 矩阵或多维数组两种常用实现方法 - python

    在python中,实现多维数组或矩阵,有两种常用方法: 内置列表方法和numpy 科学计算包方法. 下面以创建10*10矩阵或多维数组为例,并初始化为0,程序如下: # Method 1: list ...

随机推荐

  1. [Android] Service服务详解以及如何使service服务不被杀死

    排版上的细节有些不好看,主要是我用的MarkDown编辑器预览和这里的不一样,在那个上面的样式很舒服.这里要改的地方太多就不想改了,将就看吧.下次写的时候注意.还有看到错误给我提啊. 本文链接:htt ...

  2. sql求两表的并集、交集、非交集、差集、结果集排序

    create table A( id ,) Not null primary key, name ) not null default(''), ) INSERT INTO [A]([name]) V ...

  3. 使用 PowerShell 管理 Azure 磁盘

    Azure 虚拟机使用磁盘来存储 VM 操作系统.应用程序和数据. 创建 VM 时,请务必选择适用于所需工作负荷的磁盘大小和配置. 本教程介绍如何部署和管理 VM 磁盘. 学习内容: OS 磁盘和临时 ...

  4. 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动

    VB6毕竟是很老的产品了,它的代码编辑器垂直滚动条并不能随鼠标的滚轮而滚动,这个问题会让我们在编写代码的时候觉得很不方便,不过还是有一种方法可以解决这个问题的.    先下载一个微软发布的“VB6ID ...

  5. MySQL案例08:MySQL Scheduler Events带来的风险

    定时任务是我们开发.运维人员经常用到的,比如cron,job,schedule,events scheduler等都是为了方便我们重复执行某项工作而无需人工参与而设计,这里我要说的是MySQL数据库本 ...

  6. UNIX高级环境编程(12)进程关联(Process Relationships)- 终端登录过程 ,进程组,Session

    在前面的章节我们了解到,进程之间是有关联的: 每个进程都有一个父进程: 子进程退出时,父进程可以感知并且获取子进程的退出状态. 本章我们将了解: 进程组的更多细节: sessions的内容: logi ...

  7. Java 重写 hashCode() 和 equals() 方法

    1. hashCode 1.1 基本概念 hashCode 是 JDK 根据对象的地址算出来的一个 int 数字(对象的哈希码值),代表了该对象再内存中的存储位置. hashCode() 方法是超级类 ...

  8. 熟悉LINUX系统

    常用的Shell命令 当用户登录到字符界面系统或使用终端模拟窗口时,就是在和称为shell的命令解释程序进行通信.当用户在键盘上输入一条命令时,shell程序将对命令进行解释并完成相应的动作.这种动作 ...

  9. elasticsearch报错之 memory locking requested for elasticsearch process but memory is not locked

    安装elasticsearch报错如下: [2019-01-14T03:57:16,453][ERROR][o.e.b.Bootstrap ] [ip-172-31-30-62.ec2.interna ...

  10. DevExpress12、DocumentManager

    DocumentManager控件 你用过Photoshop吗?里面每打开一个照片,就有一个小窗体承载这个照片,你可以在这些小窗体间切换,最小化.最大化.排列窗体, 这些操作都在Photoshop的大 ...