Python多项分布随机数的生成

news2024/10/7 12:24:54

文章目录

    • 二项分布
    • 多项分布

函数概率密度函数(PDF)备注
binomial(n, p) P ( k ) = ( n k ) p k ( 1 − p ) n − k P(k) = \binom{n}{k}p^k(1-p)^{n-k} P(k)=(kn)pk(1p)nk二项分布
poisson([lam]) f ( k ) = λ k e − λ k ! f(k)=\frac{\lambda^ke^{-\lambda}}{k!} f(k)=k!λkeλ泊松分布
multinomial(n, pvals)多项分布

从二项分布到泊松分布

二项分布

在理解多项分布之前,需要建立起二项分布的基本概念,在 N N N次独立重复的伯努利试验中,设A在每次实验中发生的概率均为 p p p。则 N N N次试验后A发生 k k k次的概率分布,就是二项分布,记作 X ∼ B ( n , p ) X\sim B(n,p) XB(n,p),则

P { X = k } = ( n k ) p k ( 1 − p ) n − k P\{X=k\}=\binom{n}{k}p^k(1-p)^{n-k} P{X=k}=(kn)pk(1p)nk

import numpy as np
from numpy.random import binomial
import matplotlib.pyplot as plt

fig = plt.figure()
ps = [0.2, 0.5, 0.7]
for i in range(3):
    ax = fig.add_subplot(1,3,1+i)
    ax.set_title(f"p={ps[i]}")
    for n in [50,100,200]:
        xs = binomial(n, ps[i], size=10000)
        ax.hist(xs, bins=100, alpha=0.6, label=f"n={n}")
    plt.legend()

plt.show()

效果如图所示

在这里插入图片描述

可见随着p越来越大, X X X发生的概率越来越趋近于 n n n

多项分布

多项分布是对二项分布的一个自然的推广。

二项分布最常见的案例就是投硬币,那么投掷硬币可能有两个结果产生,所以谓之二项;如果把硬币改成骰子,由于骰子有6个面,相当于每次对应六个可能发生的结果,从而可以谓之六项分布。总而言之,把一个总体按照某种属性分成有限个类的时候,就会涉及到多项分布,其概率表达式为

P ( X 1 = n 1 , ⋯   , X r = n r ) = n ! n 1 ! n 2 ! ⋯ n r ! p 1 n 1 p 2 n 2 ⋯ p r n r P(X_1=n_1,\cdots,X_r=n_r)=\frac{n!}{n_1!n_2!\cdots n_r!}p_1^{n_1}p_2^{n_2}\cdots p_r^{n_r} P(X1=n1,,Xr=nr)=n1!n2!nr!n!p1n1p2n2prnr

r = 2 r=2 r=2时,多项分布就退化为了二项分布。

在Python中,多项分布函数为

multinomial(n, pvals)

其中,pvals为一个数组,用于表示每个事件发生的概率,而且pvals之和为1,这也很好理解,以仍骰子为例,每个面的概率是 1 6 \frac16 61,其和必为1。

由于多项分布的这种多元性质,multinomialnp.random中的其他分布有一个重要区别,即多项分布得到的随机数组是二维的,如果pvals中有N项,那么输出结果就有 N N N列。

import numpy as np
from numpy.random import multinomial
import matplotlib.pyplot as plt

ps = [0.1, 0.2, 0.3, 0.4]
xs = multinomial(300,  pvals=ps, size=20000)
for x,p in zip(xs.T, ps):
    plt.hist(x, bins=150, range=(0,150), 
        alpha=0.5, label=f"p={p}")

plt.legend()
plt.show()

结果为

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解放双手!推荐一款阿里开源的低代码工具,YYDS!

之前分享过一些低代码相关的文章,发现大家还是比较感兴趣的。之前在我印象中低代码就是通过图形化界面来生成代码而已,其实真正的低代码不仅要负责生成代码,还要负责代码的维护,把它当做一站式开发平台也不为过!最近体…

AIOps是什么?为什么用它?

由于快速的数字化转型给 IT 企业组织带来了很大的压力,要求他们更加主动和敏捷,DevOps 原则和实践一直是宝贵的资源。但是,为了保持领先地位,企业需要更强大的解决方案。那么,答案是什么?当然是 AIOps&…

现在ChatGPT可以使用谷歌插件进行快速交互访问了!

文章目录前言效果原理部署过程获得ChatGPT session token克隆代码库设置ChatGPT session token项目安装启动项目谷歌浏览器安装插件报错问题前言 这个ChatGPT虽然功能很强大,但是使用的时候每次都得去打开对应的网站,把自己想问的问题复制过去&#xff…

简易Qt图片查看器

本篇使用Qt来实现一个可以查看任意目录下图片的图片查看器,可以电脑中任意目录下图片的查看,并且可以通过鼠标滚轮以及鼠标移动来实现图片的灵活放大、缩小,此外,在打开一个图片后,若该目录下还有其它图片,…

SpringBoot+Vue实现前后端分离的电影院管理系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

004:搭建常规项目框架「Window、TabBar、NavigationController、ViewController」

常见App页面结构分析: 单页面展示: 列表页面的展示「UITableView」。滚动页面的展示「UIScrollow」。 多页面展示: 通过底部标签栏「TabBar」。通过Push栈的方式进行页面的切换。UITabBarController: 介绍:通过底部…

打响跨域/中央计算「攻坚」战,这些头部企业已经抢先布局

从域控架构到中央集成式架构,跨域融合已经加速到来,从单一域控制器,到多域融合中央计算,市场门槛进一步抬升,市场也进入新一轮「攻坚」阶段。 高工智能汽车研究院发布《2023-2025年智能网联产业趋势报告》显示&#x…

Flink Checkpoint 问题排查实用指南

在 Flink 中,状态可靠性保证由 Checkpoint 支持,当作业出现 failover 的情况下, Flink 会从最近成功的 Checkpoint 恢复。在实际情况中,我们可能会遇到 Checkpoint 失败,或者 Checkpoint 慢的情况,本文会统一聊一聊 Flink 中 Checkpoint 异常的情况(包括失败和慢),以及…

【单片机】串口通信/LED点阵

目录 一、串口介绍 1、双向串口通信 2、电平标准 3、常用通信协议 4、时序图 二、串口收发数据(模式1) 1、串行控制(模式选择)寄存器SCON(可位寻址) 2、串行口数据缓冲寄存器SBUF 3、电源控制&…

引擎入门 | Unity UI简介–第2部分(7)

本期我们继续为大家进行Unity UI简介(第二部分)的后续教程 本篇内容 12.在菜单场景中添加音乐 13.开启和关闭音乐 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介(第二部分)篇幅较长,分为八篇,本…

对称加密算法(三)(DES)

文章目录DES EncryptionDES DecryptionExampleThe Avalanche EffectThe Strength of DESThe Use of 56-Bit KeysThe Nature of the DES AlgorithmReferences在 2001 年引入 AEC(Advanced Encryption Standard)之前,最为普遍使用的加密机制就是…

Python里面的xlrd模块详解

那我就一下面积个问题对xlrd模块进行学习一下: 1.什么是xlrd模块? 2.为什么使用xlrd模块? 3.怎样使用xlrd模块? 1.什么是xlrd模块? ♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel&…

SQL 入门篇之什么是别名?

SQL 入门篇之什么是别名? 📒博客主页: ​​开心档博客主页​​ 🎉欢迎关注🔎点赞👍收藏⭐留言📝 📌本文由开心档原创! 📆51CTO首发时间:&#x1…

计算机研究生就业方向之考公

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

一篇文章带你了解Linux内核进程上下文切换

1.进程上下文的概念 进程上下文是进程执行活动全过程的静态描述。我们把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为进程上文,把正在执行的指令和数据在寄存器与堆栈中的内容称为进程正文,把待执行的指令和数据在寄…

【SpringMVC】HiddenHttpMethodFilter 转换请求方式

由于浏览器只支持发送get和post方式的请求,那么该如何发送put和delete请求呢? SpringMVC 提供了 HiddenHttpMethodFilter 帮助我们将 POST 请求转换为 DELETE 或 PUT 请求 HiddenHttpMethodFilter 处理put和delete请求的条件: 当前请求的请求…

软考《系统集成项目管理工程师》必备100题(1)

新一轮软考备考来啦~为了帮助大家提高备考效率,将2023上半年软考《系统集成项目管理工程师》必备100题,分享给大家,快来跟着一起打卡学习吧! 有电子版的,可以打印下来背诵~ 1.项目管理过程组有哪些? 启动过程组:定…

aspose win/linux WORD转PDF(及其解决乱码方式)

aspose win/linux WORD转PDF(及其解决乱码方式)1.工具类2.控制台3.解决乱码4.JAR包之前自己用的docm4j 本地进行转换是ok 在服务器中就异常了; 后来在网上查询之后 do4j无法支持liunx系统; 1.工具类 package com.aostar.ida.fra…

LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计2

LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计2 这部分是< LabVIEW在面向对象编程中利用硬件抽象层(HAL)设计1>的下半部分。 一体化项目 因此&#xff0c;部署为打包库&#xff0c;实际上有多种方法来开发代码:首先&#xff0c;将查看all-in-one项目方法。父类和子…

python numpy 的输出控制

示例代码&#xff1a; import numpy as np #precision: xnp.array([3.1415926]) print(x) np.set_printoptions(precision4) print(x)#threshold: xnp.arange(0,12,1) print(x) np.set_printoptions(threshold7) print(x)#edgeitems: xnp.arange(0,12,1) print(x) np.set_prin…