first commit
This commit is contained in:
43
芳林公司项目/pytest/utils/qq.py
Normal file
43
芳林公司项目/pytest/utils/qq.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import math
|
||||
import numpy as np
|
||||
from scipy import integrate
|
||||
|
||||
#历史数据处理
|
||||
def handle_data(all_marks=[569,
|
||||
570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,
|
||||
595,596,597,598,599
|
||||
]):#以列表形式传入省份所有考生的成绩[1,2,3]
|
||||
a = np.mean(all_marks)#平均值
|
||||
sigma = np.std(all_marks)#方差
|
||||
print('a=',a,'sigma=',sigma)
|
||||
return a,sigma
|
||||
|
||||
#等效分计算
|
||||
def mark(a=584.0,sigma=8.94427190999916,per_mark=600):#a和sigma由上一个函数得出,per_mark为需要转化成等效成绩的高考分数
|
||||
re_mark = 100 * ((per_mark - a) / sigma) + 500
|
||||
if re_mark > 900:
|
||||
re_mark = 900
|
||||
elif re_mark < 100:
|
||||
re_mark = 100
|
||||
return re_mark
|
||||
|
||||
#录取概率
|
||||
def P_get(uni_marks=[580,581,582,583,
|
||||
584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599],per_mark=589): #以列表形式学校录取的所有考生的成绩
|
||||
per_mark = mark(per_mark=per_mark)
|
||||
re_uni_mark = [] #学校录取学生的等效分
|
||||
for i in uni_marks:
|
||||
re_uni_mark.append(mark(per_mark=i))
|
||||
E = np.mean(re_uni_mark) #学校录取考生的等效分平均值即期望
|
||||
S = np.std(re_uni_mark)
|
||||
D = S ** 2 #样本方差
|
||||
def p(x): #录取分数的概率密度函数
|
||||
return (1/(D*(2*math.pi)**0.5))*((math.e)**(-((x-E)**2)/(2*D)))
|
||||
P,err = integrate.quad(p,100,per_mark)
|
||||
P = P*100
|
||||
print('录取概率为',P)
|
||||
return P
|
||||
# num = 570
|
||||
# while num < 600:
|
||||
# print('分数为',num,'时','录取概率为',P_get(per_mark=num))
|
||||
# num += 1
|
||||
Reference in New Issue
Block a user