您當前的位置:首頁 > 動漫

【機率論與數理統計】python實驗

作者:由 小白師哥 發表于 動漫時間:2022-11-19

實驗一拋硬幣試驗的模擬

利用python產生一系列0和1的隨機數,模擬拋硬幣試驗。驗證拋一枚質地均勻的硬幣,正面向上的頻率的穩定值為0。5。

實驗步驟

(1)生成0和1的隨機數序列,將其放入列表count中;也可用函式表示。

(2)統計0和1出現的次數,將其放入a中。a[0],a[1]分別表示0和1出現的次數。

(3)畫圖展示每次實驗正面向上出現的頻率

import matplotlib。pyplot as plt

import random

def doss():

return random。randint(0,1)#返回隨機數 1為下,0為上

indices = [] #拋了多少次

freq = [] #儲存朝上的頻率

for toss_num in range(10,10001,10):

heads = 0 #向上的次數

for i in range(toss_num):

if doss() == 0:

heads+=1

freq。append(heads/toss_num)

indices。append(toss_num)

plt。plot(indices,freq)

plt。show()

【機率論與數理統計】python實驗

實驗二 派的估計及其視覺化

假設有一箇中心在原點的邊長為2的正方形,並畫出其的內切圓,即圓的半徑為1,圓心在原點。向正方形中隨機的投點,從而計算圓周率。

使用隨機投點法計算圓周率時,只需要統計落在圓內的點和正方形內的點的個數,兩者的商為投點落在圓內的頻率。再由幾何概型,計算投點落在圓內的機率。由將該試驗大量重複的進行,根據貝努利大數定律,得到的頻率值近似等於機率。根據幾何概型有所以,從而計算出圓周率的近似值。

實驗步驟:

1)生成兩個系列的[-1,1]的隨機數。

2)如果點在圓內,把點標為藍色;否則標綠色。

3)統計藍色點的個數,計算頻率,從而算出圓周率的近似值。

import numpy as np

import matplotlib。pyplot as plt

# 畫單位圓

theta = np。linspace(0, 2 * np。pi, 200)

x = np。cos(theta)

y = np。sin(theta)

fig, ax = plt。subplots(figsize=(4, 4))

ax。plot(x, y, color=“darkred”)

plt。xticks([]) # 去掉座標軸的刻度等

plt。yticks([]) # 去掉座標軸的刻度等

N = 1000

count = 0

for i in range(1, N + 1):

x = np。random。uniform(-1, 1) # 產生服從[-1,1]上的均勻分佈的N個隨機數

y = np。random。uniform(-1, 1) # 產生服從[-1,1]上的均勻分佈的N個隨機數

if x ** 2 + y ** 2 < 1:

count += 1

plt。plot(x, y, ‘bo’) # 如果點在圓內,畫藍色

else:

plt。plot(x, y, ‘go’) # 不在圓內,畫綠色

p = count / N

plt。show()

pai = 4 * p

print(pai)

實驗三 二項分佈的應用

有一繁忙的汽車站,每天有大量汽車透過,設每輛車在一天的某時段出事故的機率0。0001,在某天的該時段內有1000輛汽車透過,問出事故的次數不小於2的機率是多少(利用泊松定理)?

1)先使用二項分佈的分佈函式計算X>1的機率。

2)再使用公式計算X>1的機率

對比兩個機率值。

3)使用泊松分佈的分佈函式計算X>1的機率。

4)使用公式計算X>1的機率。

5)對比使用兩個分佈計算出來機率值。

import numpy as np

from scipy。stats import binom #匯入binom

from matplotlib import pyplot as plt

# numpy。random。binomial(n,p,size=None)

# 3個引數:n表示伯努利試驗次數,p表示伯努利試驗得到正例的機率,size表示取樣次數;返回結果為出現正例的次數k。

#cdf(k, n, p) k:分佈函式自變數,n,p:分佈引數 累積機率函式(分佈函式)F ( k )

#sf(k, n, p) k:分佈函式自變數,n,p:分佈引數 殘存函式 1-F(k)

prob=binom。sf(k=1, n=1000, p=0。0001) #計算P(X<=1)

print(prob)

from scipy。stats import poisson #匯入poisson

prob1=poisson。sf(k=1, mu=1) #計算引數為1時機率P(X>1)

print(prob1)

實驗四 正態分佈的計算

設某品牌瓶裝礦泉水的標準容量是500毫升,設每瓶容量X(以毫升)是隨機變數,X~N(500,25),求:

(1) 隨機抽查一瓶,其容量大於510毫升的機率;

(2) 隨機抽查一瓶,其容量與標準容量之差的絕對值在8毫升之內的機率;

(3) 求常數C,使每瓶的容量小於C的機率為0。05。

實驗步驟:

(1)用norm。cdf()計算正態分佈的分佈函式值。normcdf(x,mu,sigma)

其中norm。cdf(x,mu,sigma)分別表示要求分佈函式的x的值,mu為期望,sigma為標準差。

(2)使用norm。cdf(510,500,5)計算。

(3),使用norm。cdf(508,500,5)- norm。cdf(5492,500,5)計算。

(4)norm。ppf(alpha,mu,sigma)計算α分位數。

from scipy。stats import norm

prob1=norm。cdf(510,500,5)

print(prob1)

prob2=norm。cdf(508,500,5)- norm。cdf(492,500,5)

print(prob2)

alpha=norm。ppf(0。05,500,5)

print(alpha)

實驗五 二維連續型分佈的相關係數

設隨機變數聯合密度函式為[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ZvXAyQNs-1639205559720)(attachment:image。gif)],

求X、Y的期望、相關係數。

實驗步驟:

(1)設5個函式y1,y2,y3,y4,y5,分別表示!

(2)令y1中的兩個變數分別從0到2積分,使用from scipy。integrate import dblquad匯入二重積分的包,而計算二重積分的格式為dblquad(y1,0,2,lambda g:0,lambda h:2),其中前面的0,2表示x的積分限,lambda g:0,lambda h:2表示y的積分限。而且dblquad返回兩個值,一個是積分值,另一個是誤差,可設兩個變數接收結果,後面需要使用時僅用積分值即可。最終得到E(X)。

(3)令y2中的兩個變數分別從0到2積分,得到E(Y)。令y3中的兩個變數分別從0到2積分,得到E(X2)。令y4中的兩個變數分別從0到2積分,得到E(Y2)。令y5中的兩個變數分別從0到2積分,得到E(XY)。

(4)使用方差的計算公式,計算D(X),D(Y)。使用協方差的計算公式,計算協方差。再使用,求出相關係數。

from scipy。integrate import dblquad

import math

Ex, err1 = dblquad(lambda y,x:1/8*x*(x+y),0,2,lambda g:0,lambda h:2)

print(Ex)

Ey, err2 = dblquad(lambda y,x:1/8*y*(x+y),0,2,lambda g:0,lambda h:2)

print(Ey)

Ey2, err4 = dblquad(lambda y,x:1/8*y*y*(x+y),0,2,lambda g:0,lambda h:2)

print(Ey2)

Ey2, err4 = dblquad(lambda y,x:1/8*y*y*(x+y),0,2,lambda g:0,lambda h:2)

print(Ey2)

Exy, err3 = dblquad(lambda y,x:1/8*x*y*(x+y),0,2,lambda g:0,lambda h:2)

print(Exy)

Dx = (Ex2-Ex)**2

print(Dx)

Dy = (Ey2-Ey)**2

print(Dy)

cov = Exy-Ex*Ey

print(cov)

p = cov/math。sqrt(Dx*Dy)

print(p)

我建了一個python小白交流群,我會給大家分享我收集整理的各種學習資料,組織大家一起做專案練習,幫助大家匹配一位學習夥伴互相監督學習,歡迎加入

作者:m0_52427832

連結:【機率論與數理統計】python實驗_m0_52427832的部落格-CSDN部落格

標簽: Lambda  print  norm  import  CDF