数理基础(概率论)------离散型随机变量均匀分布、正态分布、指数分布图像和连续型随机变量泊松分布、二项分布图像

1.均匀分布

1.1标准均匀分布(0-1)

import numpy as np
#满足0-1均匀分布 X~U(a,b)  a=0,b=1
s1=np.random.rand(1000)
print(s1)
#期望 E(X)=(a+b)/2=(0+1)/2=0.5
print(s1.mean())
#方差 D(X)=(b-a)²/12=1/12
print(s1.var())

代码运行结果:
0.49659926508513635
0.08177007077913671

在这里插入图片描述

1.2均匀分布(a=1,b=4)

import numpy as np
#满足1-4均匀分布 X~U(a,b)  a=1,b=4
s2=np.random.uniform(1,4,1000)
print(s2)
#期望 E(X)=(a+b)/2=(1+4)/2=0.5
print(s2.mean())
#方差 D(X)=(b-a)²/12=3/4
print(s2.var())

#绘制直方图
#hist(第一个参数:数据,  2:分成多少组)
plt.hist(s2,50)
#x轴:分成的小区间  y轴:在小区间中分别包含多少个数
plt.show()

代码运行结果:
2.4636368580531967
0.7618935545895295

在这里插入图片描述

2.正态分布

2.1标准正态分布(μ=0,σ=1)

import numpy as np
#满足标准正态分布 X~N(μ,σ²) μ=0,σ=1
s3=np.random.randn(1000)
print(s3)
#期望 E(X)=μ=0
print(s3.mean())
#方差 D(X)=σ²=1
print(s3.var())
#绘制直方图
#hist(第一个参数:数据,  2:分成多少组)
plt.hist(s3,50)
#x轴:分成的小区间  y轴:在小区间中分别包含多少个数
plt.show()
代码运行结果:
0.010533220131881613
1.0355896447670396

在这里插入图片描述

2.2正态分布(μ=6,σ=4)

import numpy as np
#满足标准正态分布 X~N(μ,σ²) μ=6,σ=4
s4=np.random.normal(6,4,1000)
print(s4)
#期望 E(X)=μ=0
print(s4.mean())
#方差 D(X)=σ²=16
print(s4.var())
#绘制直方图
#hist(第一个参数:数据,  2:分成多少组)
plt.hist(s4,50)
#x轴:分成的小区间  y轴:在小区间中分别包含多少个数
plt.show()
代码运行结果:
5.925563519203148
15.380646647328417

在这里插入图片描述

3. 自定义均匀分布

import numpy as np
import matplotlib.pyplot as plt
def uniform(x,a,b):
    ls=[]
    for i in x:
        if a<=i<=b:
            y=1/(b-a)
            ls.append(y)
        else:
            ls.append(0)
    return ls
    
def uniform(x,a,b):
    y = [1 / (b - a) if a <= i and i <= b else 0 for i in x]
    return y

绘制一个a,b不同取值的情况

#绘制a和b等于一个值的情况
x=np.linspace(-10,10,100) #使用numpy生成 -10-10 之间100个点
a=3   # a设置为3
b=5   # b设置为5
y=uniform(x,a,b)  #调用函数,计算 y对应的值
plt.plot(x,y)     #绘制均匀分布的概率密度函数图像
plt.show()

用for循环实现绘制多个a,b不同取值的图像

# a,b=(-8,0)、(-3,3)、(2,7)
# 用for循环实现绘制多个a,b不同取值的图像
x=np.linspace(-10,10,100) #使用numpy生成 -10-10 之间100个点
ls=[(-8,0),(-3,3),(2,7)]
for k in ls:
      a,b=k[0],k[1]
      y=uniform(x,a,b)  #调用上面uniform函数,计算y对应的值
      plt.plot(x,y,label='a={},b={}'.format(a,b))
      plt.legend()
plt.show()

在这里插入图片描述

4. 自定义正态分布

import numpy as np
import matplotlib.pyplot as plt
def normal(x):
    miu = x.mean()  # 期望
    sigma = x.std()  # 标准差
    a=(x-miu)**2/(2*sigma**2)
    y=1/(sigma*(2*np.pi)**0.5)*np.exp(-a)
    return y,miu,sigma

if __name__ == '__main__':
    x=np.linspace(4,7,1000)
    y,miu,sigma=normal(x) #调用函数,计算 y对应的值
    plt.plot(x,y,label=r'$\mu={:.2f},\sigma={:.2f}$'.format(miu,sigma))
    plt.legend()
    plt.show()

在这里插入图片描述

5. 自定义指数分布

import numpy as np
import matplotlib.pyplot as plt

def zhishu(x,r):
    y = r * np.exp(-r * x)
    return y

if __name__ == '__main__':
    x=np.linspace(0,10,1000) #使用numpy生成 0-5之间100个点
    r=6             # λ设置为3
    y=zhishu(x,r)  #调用函数,计算y对应的值
    plt.plot(x,y)  #绘制指数分布的概率密度函数图像
    plt.show()

在这里插入图片描述

6. 自定义二项分布

def bioxiang(n,p):
    la=[]
    for k in range(n+1):
        y=sp.comb(n,k)*p**k*(1-p)**(n-k)
        la.append(y)
    return la

def bioxiang(n,p):
	y=[sp.comb(n,k)*p**k*(1-p)**(n-k) for k in range(n+1)]
    return y
    
if __name__ == '__main__':
    n = 10
    p = 0.6
    # x=np.arange(n+1) #使用numpy生成 0,1...10  11个点
    x=[i for i in range(n+1)]
    y=bioxiang(n,p) #调用函数,计算 y对应的值
    plt.scatter(x,y,marker='o') #绘制分布律函数图像
    plt.savefig('b.jpeg')
    plt.show()

在这里插入图片描述

7. 自定义泊松分布

import numpy as np
import scipy.special as sp
import matplotlib.pyplot as plt

def possion(n,rua):
    ls=[]
    for k in range(n+1):
        y=rua**k/(sp.factorial(k))*np.exp(-rua)
        ls.append(y)
    return ls
    
def possion(n,rua):
    ls=[rua**k/(sp.factorial(k))*np.exp(-rua) for k in range(n+1)]
    return ls
    
if __name__ == '__main__':
    n=11
    rua=5
    x=np.arange(n+1)#使用numpy生成 0,1...20  21个点
    y=possion(n,rua)#调用函数,计算 y对应的值
    plt.scatter(x,y,marker='o')#绘制分布律函数图像
    plt.show()

在这里插入图片描述

8. 自定义两点分布

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats

def binpoint(p):
    a=0
    b=1
    y={a:p,b:1-p}
    return [y[a],y[b]]

p=0.3
x=np.array([0,1])
y=binpoint(p)
plt.scatter(x,y)
plt.show()

在这里插入图片描述

9. 卡方分布

在这里插入图片描述在这里插入图片描述

from scipy import stats
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0, 10, 100)
df=4
y=stats.chi2.pdf(x, df)
plt.plot(x, y)
plt.xlim(0, 10)
plt.ylim(0, 0.4)

在这里插入图片描述

from scipy import stats
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0, 10, 100)
ls=[2,4,7,9]
linestyle=[':', '--', '-.', '-']
for df,lines in zip(ls,linestyle):
	y=stats.chi2.pdf(x, df)
	plt.plot(x, y,linestyle=lines,label=r'df={}'.format(2,4,7,9))
plt.xlim(0, 10)
plt.ylim(0, 0.4)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Chi-Square Distribution')
plt.legend(loc='upper right')
plt.show()

在这里插入图片描述

10. beta分布

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats


x = np.arange(0.01, 1, 0.01)
alpha = 1
beta = 1
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))

alpha = 1
beta = 3
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))

alpha = 1
beta = 5
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))

alpha = 1
beta = 7
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))
plt.legend(loc="upper left")
plt.xlabel("Number of success")
plt.ylabel("Probablity of success")
plt.legend(loc='upper')
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats

x = np.arange(0.01, 1, 0.01)
alpha = 0.5
beta = 1
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))

alpha = 1
beta = 1
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))

alpha = 3
beta = 1
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))

alpha = 5
beta = 1
y = stats.beta.pdf(x, alpha, beta)
plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))


plt.legend(loc="upper left")
plt.xlabel("Number of success")
plt.ylabel("Probablity of success")
plt.legend(loc='upper')
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
x = np.arange(0.01, 1, 0.01)
alpha = [0.5,1,4,7]
beta = 1
for alpha in alpha:
    x = np.arange(0.01, 1, 0.01)
    y = stats.beta.pdf(x, alpha, beta)
    plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))

alpha=1
beta=[0.5,1,1.5,5]
for beta in beta:
    y = stats.beta.pdf(x, alpha, beta)
    plt.plot(x, y, label=r'$\alpha={},\beta={}$'.format(alpha, beta))
plt.legend(loc="upper left")
plt.xlabel("Number of success")
plt.ylabel("Probablity of success")
# plt.legend(loc='upper')
plt.show()

在这里插入图片描述

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞龙程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值