用python写一个程序来验证每个数字的生成概率是否相同,python3 概率论 作业

8b0a6e27043e3274a72b098d19840c9a.png

(1)模拟求解和使用分布函数求解的对比,基本一致

from scipy import stats

X = stats.norm(loc=1.5, scale=0.5)

# p{1.8

print(X.cdf(2.9) - X.cdf(1.8))

# 模拟求解

cnt = 0

all_num = 100000

for i in range(all_num):

t = X.rvs()

# print(t)

if 2.9 > t > 1.8:

cnt += 1

print(cnt / all_num)

0.27169798742

0.27318

(2) 直接使用分位函数

X = stats.norm(loc=1.5, scale=0.5)

print(X.ppf(0.95))

2.32242681348

(3)

X = stats.norm(loc=0, scale=1)

Y = stats.norm(loc=0, scale=2)

Z = stats.norm(loc=0, scale=4)

t = np.arange(-5, 5, 0.01)

pl.plot(t, X.pdf(t), label="$X$", color="red")

pl.plot(t, Y.pdf(t), label="$Y$", color="blue")

pl.plot(t, Z.pdf(t), label="$Z$", color="yellow")

pl.show()

0e9e08feca891fb36ba3710580c69f4d.png

X = stats.norm(loc=0, scale=1)

Y = stats.norm(loc=2, scale=1)

Z = stats.norm(loc=-2, scale=1)

t = np.arange(-5, 5, 0.01)

# sns.distplot(X.rvs(size=10000))

# pl.show()

pl.plot(t, X.pdf(t), label="$X$", color="red")

pl.plot(t, Y.pdf(t), label="$Y$", color="blue")

pl.plot(t, Z.pdf(t), label="$Z$", color="yellow")

pl.show()

cbb7e13e5d88ee83907332a9aba4d37a.png

c1af056efa1683aa016b9fdb6a631161.png

(3) 使用参数为1的指数分布验证中心极限定理

from scipy import stats

from scipy.stats import expon

from scipy.stats import norm

import pylab as pl

import numpy as np

import seaborn as sns

# 参数为1 的指数分布

e = expon()

print(e.mean(), e.var(), e.std())

d = e.rvs(size=10000)

# 指数分布的概率密度图像

sns.distplot(d, hist=False, color="r", kde_kws={"shade": False})

pl.show()

# 十个指数分布的随机变量和的概率密度图像

all_num = 100

# 只需要加n-1次

for i in range(all_num-1):

d += e.rvs(size=10000)

sns.distplot(d, hist=False, color="g", kde_kws={"shade": False})

print(norm.fit(d))

# 理论值

print(all_num, all_num ** 0.5)

pl.show()

n=10

6fb462c88f137d4f9567a1b03235558b.png

ede2343759c6213db16c2b51c5ef6515.png

(9.9733002779022275, 3.1794247621538174)

10 3.1622776601683795

n=100

501e6db9d0698e94e789491b75acb8ce.png

(99.968901023434967, 9.9684825279139382)

100 10.0

(4)

3541b242db64b62d3537b35addb67d95.png

t 分布,红色是标准正态分布,蓝色是t分布

from scipy import stats

from scipy.stats import expon

from scipy.stats import norm

import pylab as pl

from scipy.stats import t

import numpy as np

import seaborn as sns

# t 分布的颜色和维度关系

colors = {

'red': 1,

'black': 5,

'blue': 10,

'green': 20,

'yellow': 40,

}

nm = norm.rvs(size=1000)

for color, n in colors.items():

d = t.rvs(n, size=1000)

sns.distplot(d, color='red', hist=False, kde_kws={"shade": False})

sns.distplot(nm, color='blue', hist=False, kde_kws={"shade": False})

pl.show()

n=1

a0a26de238d6b0dd43cb781e7438ffd4.png

n=5

3acc1180cc8913bd539d984e519c019a.png

n=10

364922c991a4afbeb8a821e719df55b9.png

n=20

7e8aa998ff1e0ef875e70509712e297f.png

n=40

6ff9ba9890ef01887a168d3e7a97774a.png

f分布

from scipy import stats

from scipy.stats import expon

from scipy.stats import norm

import pylab as pl

from scipy.stats import t

from scipy.stats import f

import numpy as np

import seaborn as sns

# t 分布的颜色和维度关系

lst = [

1, 3, 5, 7, 10, 15, 20

]

for i in lst:

rv = f(10, i)

d = rv.rvs(size=1000)

sns.distplot(d, color='red', hist=False, kde_kws={"shade": False})

pl.show()

f(10,1)

932304eed72404cc62e0fe85bc34cc9b.png

f(10,15)

26ad5e23609a715eb7cef13085e90e5f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值