当前位置: 首页 > news >正文

利用MCMC 获得泊松分布

P_n=\frac{\lambda^nexp(-\lambda)}{n!},n=0,1,2,...

X\sim P(\lambda),E(X)=\sqrt{D(X)}=\lambda


  • 写出概率流方程如下
        if state == 0:            if np.random.random() <= min([Lambda/2, 1]):state = 1else:passelif state == 1:if choose_prob_state[i] <= 0.5:#选择 1 -> 0,此时的接受概率为min[2/Lambda, 1]if np.random.random() <= min([2/Lambda, 1]):state = 0else:passelse:#选择 1 -> 2,此时接受概率为 min[Lambda/(n+1), 1]if np.random.random() <= min([Lambda/(state+1), 1]):state = 2else:passelif state >= 2:if choose_prob_state[i] <= 0.5:#选择 n -> n+1,此时接受概率为 min[Lambda/(n+1), 1]if np.random.random() <= min([Lambda/(state+1), 1]):state = state + 1else:passelse:#选择 n+1 > n,此时接受概率为 min[(n+1)/Lambda, 1]if np.random.random() <= min([(state)/Lambda, 1]):state = state - 1else:pass

  • blocking 方法
def block_averages(data, block_size):num_blocks = len(data) // block_sizeblocks = data[:num_blocks*block_size].reshape(num_blocks, block_size)block_avgs = blocks.mean(axis=1)return block_avgsblock_mean = []
block_std  = []for i in range(1, 201):block_size = 5 * iblock_avgs = block_averages(results, block_size)mean_estimate = np.mean(block_avgs)standard_error = np.std(block_avgs, ddof=1) / np.sqrt(len(block_avgs))block_mean.append(mean_estimate)block_std.append(standard_error)

  • Lambda = 1 生成效果

average time: 1.072e-06
ave: 0.9996688
std: 1.00027000870093
(array([3.681131e+06, 3.678446e+06, 1.837276e+06, 6.127200e+05,
       1.533770e+05, 3.116400e+04, 5.095000e+03, 7.020000e+02,
       8.300000e+01, 6.000000e+00]), array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.]), <BarContainer object of 10 artists>)

  • blocking method 

  • 随着block 增大 稳定效果显著

  • Lambda = 7

average time: 1.153e-06
ave: 7.0095212
std: 2.6496322285839153
(array([9.062000e+03, 6.352700e+04, 2.216480e+05, 5.190980e+05,
       9.097340e+05, 1.274978e+06, 1.487161e+06, 1.487430e+06,
       1.304976e+06, 1.016897e+06, 7.126600e+05, 4.541560e+05,
       2.646540e+05, 1.432550e+05, 7.228000e+04, 3.374700e+04,
       1.474600e+04, 6.073000e+03, 2.455000e+03, 9.640000e+02,
       3.790000e+02, 9.900000e+01, 1.700000e+01, 4.000000e+00]), array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11., 12.,
       13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.]), <BarContainer object of 24 artists>)
 



  • 完整代码
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(20)
import copy
import time##pn = \lambda^n * exp(-\lambda)/n!def poidis(Lambda, num, init=0):random_list = np.zeros(num)state = initmax_state = initrandom_list[0] = statechoose_prob_state = np.random.random(num)for i in range(1, num):if state == 0:            if np.random.random() <= min([Lambda/2, 1]):state = 1else:passelif state == 1:if choose_prob_state[i] <= 0.5:#选择 1 -> 0,此时的接受概率为min[2/Lambda, 1]if np.random.random() <= min([2/Lambda, 1]):state = 0else:passelse:#选择 1 -> 2,此时接受概率为 min[Lambda/(n+1), 1]if np.random.random() <= min([Lambda/(state+1), 1]):state = 2else:passelif state >= 2:if choose_prob_state[i] <= 0.5:#选择 n -> n+1,此时接受概率为 min[Lambda/(n+1), 1]if np.random.random() <= min([Lambda/(state+1), 1]):state = state + 1else:passelse:#选择 n+1 > n,此时接受概率为 min[(n+1)/Lambda, 1]if np.random.random() <= min([(state)/Lambda, 1]):state = state - 1else:passelse:print("undefined state!")breakrandom_list[i] = copy.deepcopy(state)if max_state < state:max_state = copy.deepcopy(state)return random_list, max_statenum = int(1e7)
start = time.time()
results, max_state = poidis(7, num)
end = time.time()
print("average time:", round((end-start)/num, 9))hist_doc = plt.hist(results, bins=[i for i in range(max_state+2)])
print("ave:", np.average(results))
print("std:", np.std(results))
print(hist_doc)plt.show()def block_averages(data, block_size):num_blocks = len(data) // block_sizeblocks = data[:num_blocks*block_size].reshape(num_blocks, block_size)block_avgs = blocks.mean(axis=1)return block_avgsblock_mean = []
block_std  = []for i in range(1, 201):block_size = 5 * iblock_avgs = block_averages(results, block_size)mean_estimate = np.mean(block_avgs)standard_error = np.std(block_avgs, ddof=1) / np.sqrt(len(block_avgs))block_mean.append(mean_estimate)block_std.append(standard_error)plt.scatter(range(1, 201), block_std, s=2)
plt.show()

相关文章:

利用MCMC 获得泊松分布

写出概率流方程如下 if state 0: if np.random.random() < min([Lambda/2, 1]):state 1else:passelif state 1:if choose_prob_state[i] < 0.5:#选择 1 -> 0&#xff0c;此时的接受概率为min[2/Lambda, 1]if np.random.random() < min([2/Lambda, 1]…...

docker-compose脚本编写及常用命令

安装 linux DOCKER_CONFIG/usr/local/lib/docker/cli-plugins sudo mkdir -p $DOCKER_CONFIG/cli-plugins sudo curl -SL https://521github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose sudo c…...

编译企业微信会话内容存档PHP版SDK扩展

1.下载SDK 如果克隆不了&#xff0c;就页面下载 git clone https://github.com/pangdahua/php7-wxwork-finance-sdk2.下载企微官网C版本的最新sdk文件 下载地址&#xff1a;https://wwcdn.weixin.qq.com/node/wework/images/sdk_20201116.rar 下载以后将解压之后的文件夹里l…...

传统算法:使用 Pygame 实现K-Means 聚类算法

使用 Pygame 模块演示了 K-Means 聚类算法的基本原理。让我逐步解释它的实现: 初始化和基本设置 Pygame 初始化: 通过 pygame.init() 初始化 Pygame。 定义颜色和屏幕大小: 定义了一些颜色常量(WHITE, BLACK, RED, GREEN, BLUE)和屏幕的宽度和高度。 创建 Pygame 窗口:…...

WebUI工作流插件超越ComfyUI

在AI绘画领域&#xff0c;Stable Diffsion是最受欢迎的&#xff0c;因为它是开源软件。 开源有两大优势&#xff0c;一是免费&#xff0c;二是适合折腾。 大量的开发者、爱好者投入无尽的热情&#xff0c;来推动Stable Diffsion的快速发展。 在图形界面方面&#xff0c;WebU…...

Docker容器化平台及其优势和应用场景介绍

Docker是一种开源的容器化平台&#xff0c;它基于操作系统级别虚拟化技术&#xff0c;可以将应用程序及其依赖项打包成一个独立的容器&#xff0c;提供轻量级、一致性、可移植性的应用环境。Docker的基本概念和优势如下&#xff1a; 镜像(Image)&#xff1a;Docker容器的基础&…...

Hive:从HDFS回收站恢复被删的表

场景 一张手工维护的内部表&#xff0c;本来排查没有使用&#xff0c;然后删掉了&#xff0c;发现又需要使用&#xff0c;只能恢复这张表了。 1.确认HDFS是否开启回收站功能 2.查看回收站中的数据 被删除的数据会放在删除数据时使用的用户目录下&#xff0c;如&#xff1a;使…...

TZOJ 1387 人见人爱A+B

答案&#xff1a; #include <stdio.h> void time(int ah, int am, int as, int bh, int bm, int bs, int* sum_h, int* sum_m, int* sum_s) //不需要返回值所以定义void函数&#xff0c;前面6个为输入&#xff0c;然后用指针存给后面三个 {*sum_s (as bs) % 60; …...

校园圈子系统丨交友丨地图找伴丨二手市场等功能丨源码交付支持二开丨APP小程序H5三端交付!

校园圈子系统是一款专为校园生活设计的智能应用&#xff0c;拥有丰富多样的功能模块&#xff0c;提供全方位的服务。无论您是师生还是校友&#xff0c;我们都为您打造了一个与校园紧密相连的交流平台。 通过校园圈子系统&#xff0c;您可以方便地浏览校内最新动态&#xff0c;包…...

java操作windows系统功能案例(一)

下面是一个Java操作Windows系统功能的简单案例&#xff1a; 获取系统信息&#xff1a; import java.util.Properties;public class SystemInfo {public static void main(String[] args) {Properties properties System.getProperties();properties.list(System.out);} }该程…...

【双向链表的实现】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 双向链表的结构 2. 双向链表的实现 2.1 头文件 ——双向链表的创建及功能函数的定义 2.2 源文件 ——双向链表的功能函数的实现 2.3 源文件 ——双向链表功能的…...

中台战略思想与架构总结

中台战略思想与架构总结 在2015年年中&#xff0c;马云带领阿里高管&#xff0c;拜访了游戏公司Supercell&#xff0c;以《部落战争》《海岛奇兵》《卡通农场》等游戏知名。 Supercell是一家典型的以小团队模式进行游戏开发的公司&#xff0c;一般来说两个员工&#xff0c;或…...

VUE2+THREE.JS点击事件

THREE.JS点击事件 1.增加监听点击事件2.点击事件实现3.记得关闭页面时 销毁此监听事件 1.增加监听点击事件 renderer.domElement.addEventListener("click", this.onClick, false); 注:初始化render时监听 2.点击事件实现 onClick(event) {const raycaster new …...

基于SSM+SpringBoot+Vue小区车位租赁系统

[技术实现] 小区车位租赁系统是使用SSMSpringBootVue前后端分离的管理系统。使用Spring框架可以在自动注入项目层级之间的调用对象&#xff0c;方便解耦&#xff0c;SpringMVC是体现了MVC设计思想的轻量级web框架&#xff0c;对web层进行解耦&#xff0c;使开发更简洁,MyBatis…...

Oracle(2-8)Configuring the Database Archiving Mode

文章目录 一、基础知识1、Redo Log History2、NOARCHIVELOG Mode 非归档模式3、ARCHIVELOG Mode 归档模式4、Changing the Archiving Mode 更改归档模式![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d6a09f9a6de24de7bbcdad90b8d6b9ca.png)5、Auto and Manual Ar…...

制造企业建设数字工厂管理系统的难点主要有哪些

随着科技的飞速发展&#xff0c;制造企业正面临着从传统生产模式向数字化、智能化转型的挑战。其中&#xff0c;建设数字工厂管理系统是实现这一目标的重要途径。然而&#xff0c;在实际操作过程中&#xff0c;制造企业往往会遇到一系列难点。本文将对这些难点进行详细的分析。…...

基于UDP网络聊天室OICQ

Linux系统 Gcc Gdb makefile 实现局域网OICQ程序设计&#xff0c;包括客户端和服务端。 客户端描述&#xff1a;客户端运行开始出现登陆界面。与服务端进行连接&#xff0c;连接后把账号信息发送给服务端&#xff0c;服务端验证后&#xff0c;把确认结果通知客户端。如果通…...

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示整数、小数应用

基于STC12C5A60S2系列1T 8051单片机的液晶显示器LCD1602显示整数、小数应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD1602简单介绍IIC通信简单介绍…...

【微信小程序】保存多张图片到本地相册 wx.saveImageToPhotosAlbum

这里写目录标题 微信小程序检测是否有存储权限wx.getSetting 图片上传从HTML中提取img标签的src属性多图片下载 微信小程序检测是否有存储权限 wx.getSetting 上传前判断是否开启存储权限&#xff0c;如果不检测直接上传会出现fail的情况 var _this this wx.getSetting({su…...

【Android】使用intent.putExtra()方法在启动Activity时传递数据

食用方法 在Android中&#xff0c;你可以使用Intent对象来在启动Activity时传递数据。以下是一个示例&#xff0c;展示了如何在startActivity时传递数据到被启动的Activity&#xff1a; 在启动Activity的地方&#xff0c;创建一个Intent对象&#xff0c;并使用putExtra()方法…...

Lindy元数据驱动自动化:如何用1个Schema定义自动生成8类分析任务+监控看板

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Lindy元数据驱动自动化&#xff1a;核心理念与架构全景 Lindy元数据驱动自动化并非传统脚本编排的增强版&#xff0c;而是一种以“元数据即契约”为哲学基础的系统性范式。其核心理念在于&#xff1a;…...

如何用Akagi麻雀助手快速提升雀魂游戏水平:3个核心技巧

如何用Akagi麻雀助手快速提升雀魂游戏水平&#xff1a;3个核心技巧 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將&#xff0c;能夠使用自定義的AI模型實時分析對局並給出建議&#xff0c;內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amat…...

Cursor Free VIP终极指南:5步实现AI编程助手永久免费使用

Cursor Free VIP终极指南&#xff1a;5步实现AI编程助手永久免费使用 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your …...

sudo提权漏洞-Baron Samedit (sudo堆缓冲区溢出漏洞)复现(CVE-2021-3156)

from: https://blog.csdn.net/mooyuan/article/details/156277001 注意点&#xff1a; 下载POC的方法不可行 可以下载的地址&#xff1a;https://github.com/blasty/CVE-2021-3156 文章中&#xff1a;宿主机访问172.17.0.1:8888环境确认服务已经搭建成功 此方法测试不可行…...

3分钟快速优化Windows 11:免费开源工具Win11Debloat完全指南

3分钟快速优化Windows 11&#xff1a;免费开源工具Win11Debloat完全指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …...

ArrayList 扩容机制详解

ArrayList 扩容机制详解 ArrayList 是 Java 用得最多的 List&#xff0c;底层是动态数组。理解扩容机制能避免一些性能问题。 1. 底层结构 transient Object[] elementData; private int size;// 默认初始容量 private static final int DEFAULT_CAPACITY 10;注意&#xff1a;…...

告别拥塞:手把手优化Dragonfly网络性能,UGAL-LVC_H算法详解与配置

告别拥塞&#xff1a;手把手优化Dragonfly网络性能&#xff0c;UGAL-LVC_H算法详解与配置 在数据中心网络架构中&#xff0c;Dragonfly拓扑以其高度可扩展性和低直径特性脱颖而出&#xff0c;成为超大规模计算环境的理想选择。然而&#xff0c;当面对对抗性流量模式时&#xff…...

Keil MDK中Flash算法RAM配置的DWORD对齐问题解析

1. 问题现象与背景解析当使用Keil MDK开发环境配合J-LINK或ULINK系列调试器时&#xff0c;在Flash Download配置选项卡中设置Flash算法RAM大小时&#xff0c;可能会遇到"Invalid Number Error: Number must be DWORD Aligned"的错误提示。这个错误通常发生在以下场景…...

Monocle投票系统实现原理:构建高效的帖子排名算法

Monocle投票系统实现原理&#xff1a;构建高效的帖子排名算法 【免费下载链接】monocle Link and news sharing 项目地址: https://gitcode.com/gh_mirrors/mon/monocle Monocle是一个功能强大的链接和新闻聚合平台&#xff0c;其核心功能之一就是智能投票排名系统。这篇…...

Monocle性能监控与优化:确保高并发访问的稳定性

Monocle性能监控与优化&#xff1a;确保高并发访问的稳定性 【免费下载链接】monocle Link and news sharing 项目地址: https://gitcode.com/gh_mirrors/mon/monocle Monocle作为一个链接和新闻分享平台&#xff0c;在面对高并发访问时的稳定性至关重要。本文将分享一些…...