#导入包
#数组包
import numpy as np
#绘图包
import matplotlib.pyplot as plt
#统计计算包的统计模块
from scipy import stats
'''
arange用于生成一个等差数组,arange([start, ]stop, [step, ]
使用见文档:https://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html
'''
'''
第1步,定义随机变量:1次抛硬币
成功指正面朝上记录为1,失败指反面朝上记录为0
'''
X = np.arange(0, 2,1)
X
array([0, 1])
'''
伯努利分布官方使用文档:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.bernoulli.html#scipy.stats.bernoulli
'''
#第2步,#求对应分布的概率:概率质量函数 (PMF)
#它返回一个列表,列表中每个元素表示随机变量中对应值的概率
p = 0.5 # 硬币朝上的概率
pList = stats.bernoulli.pmf(X, p)
pList
array([0.5, 0.5])
#第3步,绘图
'''
plot默认绘制折线,这里我们只绘制点,所以传入下面的参数:
marker:点的形状,值o表示点为圆圈标记(circle marker)
linestyle:线条的形状,值None表示不显示连接各个点的折线
'''
plt.plot(X, pList, marker='o',linestyle='None')
'''
vlines用于绘制竖直线(vertical lines),
参数说明:vline(x坐标值, y坐标最小值, y坐标值最大值)
我们传入的X是一个数组,是给数组中的每个x坐标值绘制竖直线,
竖直线y坐标最小值是0,y坐标值最大值是对应pList中的值
官网文档:https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.vlines
'''
plt.rcParams['font.sans-serif']=['SimHei']
plt.vlines(X, 0, pList)
#x轴文本
plt.xlabel('随机变量:抛硬币1次')
#y轴文本
plt.ylabel('概率')
#标题
plt.title('伯努利分布:p=%.2f' % p)
#显示图形
plt.show()