超几何分布

产品抽样检查中经常遇到一类实际问题,假定在N件产品中有M件不合格品,即不合格率

在产品中随机抽n件做检查,发现k件不合格品的概率

,k=0,1,2,...,min{n,M}。

Numpy中的超几何分布

Numpy的random包中提供了产生超几何分布结果的函数:

  numpy.random.hyermetric(ngoog,nbad,nsample,size=None)

https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.hypergeometric.html

  • ngood: 做出好的选择的数量,相当于上面的N件产品中的合格品,即N-M;
  • nbad:做出坏的选择的数量,相当于上面的M件合格品;
  • nsample:每次的采样数;
  • size:采样的组数,即试验组数.

上面的hypermetric()函数返回一组size大小的数组,数组中的每个数是在一组采样中合格产品的数量,即上面的k.

下面我们用一个具体的做游戏的例子来说明这个函数的用法:

一个袋子中有20个球,其中有1个黑球,别的都是红球.从袋子中每次取3个球,如果3个都是红球加1分,如果其中有一个黑球就减4分.我们用程序来模拟100次试验以后的得分情况,并绘制出得分的变化图.

(为了方便,以下代码是在ipython -pylab运行的)

1 使用hypermetric()初始化100组试验的结果,并初始化一个分数数组.

# 初始化一个计分板
points = zeros(100)
# 使用超几何分布初始化每次实验结果
# outcomes数组中的每一个项都是一次试验中取得红球的个数
# 注意第一个参数是红球个数,即为19而不是20
outcomes = random.hypermetric(19,1,3,size = len(points))

2 根据每一次模拟试验的结果来设置分数

for i in range(len(points)):
if outcomes[i] == 3:
points[i] = points[i-1] + 1
elif outcomes[i] == 2:
points[i] = points[i-1] - 4
else:
print(outcomes[i])

3 利用matplotlib绘制分数变化的曲线

plt.plot(np.arange(len(points)),points)
plt.title("Game SImulation")
plt.xlabel('# Rounds')
plt.ylabel('Score')
plt.grid()
plt.show()

4 分数变化的曲线如下

Numpy随机数(一):超几何分布的更多相关文章

  1. Numpy随机数

    Numpy随机数 np.random随机数子库 1: 基本函数 .rand(d0,d1,..dn):创建d0-dn维度的随机数数组,浮点数,范围从0-1,均匀分布 .randn(d0,d1,..dn) ...

  2. 科学计算工具-Numpy初探

    Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组ndarray ...

  3. 【机器学习】--Python机器学习库之Numpy

    一.前述 NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵. NumPy包含很多实用的数学函数,涵盖线性代数运算.傅 ...

  4. 01. Numpy模块

    1.科学计算工具-Numpy基础数据结构 1.1.数组ndarray的属性 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成:① 实际的数据② 描述这些数据的元数据 注意数组格式, ...

  5. numpy 模块常用方法

    Numpy是科学计算库,是一个强大的N维数组对象ndarray,是广播功能函数.其整合C/C++.fortran代码的工具 ,更是Scipy.Pandas等的基础 .ndim :维度 .shape : ...

  6. Numpy基本数据结构

    Numpy数组是一个多维数组对象,称为ndarray.其由两部分组成: 1 实际的数据 2 描述这些数据的元数据 一 ndarray的方法 # 多维数组ndarray import numpy as ...

  7. Python之Numpy库常用函数大全(含注释)

    前言:最近学习Python,才发现原来python里的各种库才是大头! 于是乎找了学习资料对Numpy库常用的函数进行总结,并带了注释.在这里分享给大家,对于库的学习,还是用到时候再查,没必要死记硬背 ...

  8. Numpy科学计算工具

    Numpy初探 Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组 ...

  9. Numpy常用函数用法大全

    .ndim :维度.shape :各维度的尺度 (2,5).size :元素的个数 10.dtype :元素的类型 dtype(‘int32’).itemsize :每个元素的大小,以字节为单位 ,每 ...

随机推荐

  1. p4475 巧克力王国

    传送门 分析 我们多维护一个值,代表某个点子树中所有点的权值和 于是如果某个点它的min和max乘a(/b)的值小于范围则直接把整个子树都加进去 估价函数就是这个点的子树中的理论最小值 代码 #inc ...

  2. [Training Video - 4] [Groovy] Function in detail

    Employee.log=log Employee e1 = new Employee() Employee e2 = new Employee() e1.name = "A" e ...

  3. oracle sql 数结构表id降序

    UPDATE BAS_ORGANIZATION_TYPE T1SET T1.PARENTID=(select rn from (SELECT id,rownum rn FROM BAS_ORGANIZ ...

  4. cJSON结构体构建

    cJSON结构体构建 一:cJSON的构建. int create_objects() { cJSON *root, *fmt, *img, *thm, *fld; char *out; int i; ...

  5. Oracle——视图

    视图是一种虚表. 视图建立在已有表的基础上, 视图依赖的这些表称为基表. 视图向用户提供基表数据的另一种表现形式 对视图数据的修改会影响到基表中的数据 视图的优点 控制数据访问 简化查询 避免重复访问 ...

  6. mybatis-generator命令行生成代码

    目录文件如下: generator.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <!DOC ...

  7. RabbitMQ的四种ExChange

    在message到达Exchange后,Exchange会根据route规则进入对应的Queue中,message可能进入一个Queue也可能进入对应多个Queue,至于进入哪个Queue或者是说哪个 ...

  8. Java SimpleDateFormat用法

      ? Java中怎么才能把日期转换成想要的格式呢,或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类可以实现,以下是Si ...

  9. schedule-pool模拟并行任务分片

    模拟并行任务分片 代码部分: package com.pool; import com.alibaba.fastjson.JSON; import java.io.BufferedReader; im ...

  10. Android开发环境包下载地址

    Android SDK Android NDK Android Studio 官方下载地址   (网上转来的) 如果下载速度很慢或者无法下载,有三种解决方法 1.忍耐. 2.使用P2SP下载工具,比如 ...