二项分布python实现_Python实现概率分布(二项分布、伯努利分布、泊松分布、几何分布、正态分布等)...

1.二项分布

#导入包

import numpy as np

import matplotlib.pyplot as plt

from scipy import stats

from pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']

#生成一个数组

X1 = np.arange(0, 2, 1)

X1

p1 = 0.5

pList1 = stats.bernoulli.pmf(X1,p1)

pList1

#plot默认绘制折线

#marker:点的形状,值o表示点为圆圈标记(circle marker)

#linestyle:线条的形状,值None表示不显示连接各个点的折线

plt.plot(X1,pList1,marker='o', linestyle='None')

#vlines用于绘制竖直线(vertical lines),

#参数说明:vline(x坐标值, y坐标最小值, y坐标值最大值)

#我们传入的X是一个数组,是给数组中的每个x坐标值绘制竖直线,

#竖直线y坐标最小值是0,y坐标值最大值是对应pList1中的值

plt.vlines(X1,0,pList1)

plt.xlabel('随机变量:抛1次硬币')

plt.ylabel('概率')

plt.title('伯努利分布: p=%.2f' % p1)

plt.show()

二项分布

n2 = 5

p2 = 0.5

X2 = np.arange(0, n2+1,1)

X2

pList2 = stats.binom.pmf(X2,n2,p2)

pList2

plt.plot(X2,pList2,marker='o',linestyle='None')

plt.vlines(X2,0,pList2)

plt.xlabel('随机变量:抛硬币正面朝上的次数')

plt.ylabel('概率')

plt.title('二项分布: n=%i,p=%.2f' %(n2,p2))

plt.show()

几何分布

几何分布就是在n次伯努利试验中,试验k次才得到第一次成功的机率。

n2 = 5

p2 = 0.5

X2 = np.arange(0,n2+1,1)

X2

pList2 = stats.binom.pmf(X2,n2,p2)

pList2

plt.plot(X2,pList2,marker='o',linestyle='None')

plt.vlines(X2,0,pList2)

plt.xlabel('随机变量:抛硬币正面朝上的次数')

plt.ylabel('概率')

plt.title('二项分布:n=%i,p=%.2f' % (n2,p2))

plt.show()

泊松分布

泊松分布描述的是已知一段时间内事件发生的平均数,求某个时间内发生的概率。

mu4 = 2

k4 = 4

X4 = np.arange(0, k4+1,1)

X4

pList4 = stats.poisson.pmf(X4,mu4)

pList4

print('X4:',X4)

print('pList4', pList4)

plt.plot(X4,pList4,marker='o',linestyle='None')

plt.vlines(X4,0,pList4)

plt.xlabel('某路口发生K次事故')

plt.ylabel('概率')

plt.title('泊松分布:平均值mu=%i' % mu4)

plt.show()

正态分布

mu5 = 0

sigma = 1

X5 = np.arange(-5,5,0.1)

X5

y = stats.norm.pdf(X5,mu5,sigma)

print('X5',X5)

print('y:',y)

plt.plot(X5,y)

plt.xlabel('随机变量:x')

plt.ylabel('概率:y')

plt.title('正态分布:$\mu$=%.1f,$\sigma^2$=%.1f' %(mu5,sigma))

plt.grid()

plt.show()

你可能感兴趣的:(二项分布python实现)