Python正態(tài)分布概率計算方法,喜歡算法的伙伴們可以參考學(xué)習(xí)下。需要用到math模塊。先了解一下這個模塊方法,再來寫代碼會更好上手。
創(chuàng)新互聯(lián)專注于改則網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供改則營銷型網(wǎng)站建設(shè),改則網(wǎng)站制作、改則網(wǎng)頁設(shè)計、改則網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造改則網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供改則網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
def st_norm(u):
'''標(biāo)準(zhǔn)正態(tài)分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正態(tài)分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''輸入一個數(shù)時默認為標(biāo)準(zhǔn)正態(tài)分布
輸入三個數(shù)(空格隔開)時分別為期望、方差、x
輸入 stop 停止'''
S=input('please input the parameters:\n')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
正太分布哈哈
首先,如果想要你的一千萬個數(shù)據(jù)嚴(yán)格服從正態(tài)分布,那么先確定這個分布的數(shù)據(jù),也就是均值和方差,N(u,o),這里均值 u=50,方差 o 由你確定,根據(jù)正態(tài)分布概率密度函數(shù),對于每一個 1~100 之間的整數(shù) x,都可以確定它出現(xiàn)的概率 f(x):
正態(tài)分布概率密度函數(shù)
而共有 10 000 000 個數(shù)字,那么 10000000*f(x) 就是 x 出現(xiàn)的頻率。
因此,使用一個 101 元素的數(shù)組 freq[] 存放這些數(shù)出現(xiàn)的頻率,用 f(x)*10000000 逐個計算數(shù)組元素,也就是 x 應(yīng)該出現(xiàn)的次數(shù),假如說 2 一共會出現(xiàn) 3 次,那么 freq[2]=3,計算出之后放在那里,作為一個參照。再初始化一個全為 0 的 100 個元素的數(shù)組 sam[],記錄每個數(shù)字已經(jīng)出現(xiàn)的次數(shù)。之后開始從 1~100 隨機,每隨機一個數(shù)字 x 都給 sam[x] 加1,再和 freq[x] 比較,如果超出了 freq[x] 就說明這個數(shù)字已經(jīng)不能再出現(xiàn)了,將其舍棄。記錄隨機成功的次數(shù),達到了 10000000 次即可。
示例:
1、from numpy import *;
2、def rand_Matrix():
3、randArr=random.randn(2,3);
4、randMat=mat(randArr);
5、return randMat;
一種結(jié)果如下:
1、matrix([[ 0.3150869 , -0.02041996, -0.15361071],
2、[-0.75507988,? 0.80393683, -0.31790917]])
擴展資料
Python正態(tài)分布概率計算方法:
def st_norm(u):
'''標(biāo)準(zhǔn)正態(tài)分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正態(tài)分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''輸入一個數(shù)時默認為標(biāo)準(zhǔn)正態(tài)分布
輸入三個數(shù)(空格隔開)時分別為期望、方差、x
輸入 stop 停止'''
S=input('please input the parameters:\n')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
正態(tài)分布最早是由一位數(shù)學(xué)家從二項分布在n趨近于無窮大時的近似而推導(dǎo)出來的。 二項分布的概率密度C(m,n)*p^m*(1-p)^(n-m),考慮此函數(shù)在n趨近于無窮大,m在n/2附近時的近似。 求近似時,關(guān)鍵的一步是用斯特靈公式:N!約等于N的N次方乘以根號下2πN再除以e的N次方,當(dāng)N非常大時。在具體推導(dǎo)中,對于n,n-m,m都可以適用此近似。 另一個關(guān)鍵步驟是,推導(dǎo)中用d^2=np(1-p)來代換,也就是說,二項分布的分散,對于二項分布的近似,仍然是一個有意義的有限的值。
新聞標(biāo)題:python正態(tài)函數(shù)寫法 python函數(shù)的寫法
瀏覽路徑:http://jinyejixie.com/article4/dodopie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、小程序開發(fā)、品牌網(wǎng)站設(shè)計、網(wǎng)站收錄、全網(wǎng)營銷推廣、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)