Files
2024-09-27 01:32:49 +08:00

43 lines
1.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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