用仿照猜测考研复试经过率_关于考研成功率数学建模-CSDN博客

考研复试经过率
考研复试了咱们测验用数学办法算一下你的上岸成功率

概率
比方招生12人初试上线的一共20人

依照概率一共有

c

20

12

c_{20}^{12}

c2012?种可以性

你上线就是

c

19

11

c_{19}^{11}

c1911?种可以性

所以你的上岸成功率是

c

19

11

c

20

12

55\%

c2012?c1911??20×19×…×1219×18×…×11?2011?55%

可是这样是不对的就是初试成果

复试分析
占比
一自个初试成果350(假定打点类联考那么——

50

×

350

500

72.5

50×500350?50×10075?72.5

或许有的学校的复试占比纷歧样那么就要改一下各个参数

分值分布
复试的分数60多和90多都比照少

所以分布图大约是一个奇函数的幂函数

f(x) x3

这样可以保证均匀分布的x会发生y的正负极值分布都会少一些

咱们需要把函数做必定处置便利运用random随机

f(x) (2x – 1)3

界说域可以之后取0 ~ 1了

咱们要把y值固定在在60 ~ 100

得到函数——

f(x) 20(2x – 1)3 60

从图中可以看出来90以上也很少

假定觉得仍是多可以持续增大函数的幂

比方——

f(x) 20(2x – 1)9 60

可以看到紫色的线规模更少了

咱们写一个函数可以随机获得究竟分数

import random
def total(score):
x random.random()
y ((x*2 - 1) ** 3)*20 80
return 50 * (score/500) 50 * (y/100)

咱们试试看初试350分

total(350)

多试几回当作果

74.99852414320696
81.45032134393863
73.09044610824242
83.15058028025783
75.82464128224818
69.43091475827083
74.4028400901793

起浮仍是蛮大的

随机计算验证
咱们回到最初步——

    招生12人上线20人你初试分数350初试排名14

也就是说你需要复试之后排名在12以上(含)才干上岸

咱们来做一下仿照看看概率

仿照在人工智能中是很重要的一有些比方“蒙特卡洛”就是仿照算法


import pandas as pd
class aggregate:
def __init__(self):
pass
def preliminary(self, xls, id, rank):

self.df pd.read_excel(xls)
self.id id
self.rank rank
def reexam(self, seed1):

random.seed(seed)
self.df[] self.df[].map(lambda x:((random.random()*2 - 1) ** 3)*20 80)
self.df[] 50 * (self.df[]/500) 50 * (self.df[]/100)
self.df self.df.sort_values(by, ascendingfalse)
return self.df
def sim(self):

enroll 0
times 500 # 仿照500次
for n in range(1, times):
df self.reexam(n)
target df[df[] self.id]
rank df[df[] > target[].values[0]]
if rank.count()[0] < 12:
enroll 1
return enroll / times

你的上岸成功率
咱们初试化类之后以及选择人数

agg aggregate()
agg.preliminary(, 10014, 12)
agg.df

咱们读取了preliminary.xlsx文件一共选择12人

咱们可以先看一下数据

编号 分数
0 10001 400
1 10002 381
2 10003 380
3 10004 376
4 10005 373
5 10006 372
6 10007 370
7 10008 362
8 10009 361
9 10010 359
10 10011 353
11 10012 351
12 10013 350
13 10014 350
14 10015 35

0
15 10016 349
16 10017 349
17 10018 348
18 10019 348
19 10020 348

看当作果吧

agg.sim()

成果是0.524也就是说你的上线概率是52.4%

第一名的上岸成功率
agg aggregate()
agg.preliminary(, 10001, 12)
agg.sim()

成果是89.6%

最终一名的上岸成功率
agg aggregate()
agg.preliminary(, 10020, 12)
agg.sim()

成果是42.4%

总结

    落后2名你只需一半几率上岸第一名也不是100%上岸只需9成掌控最终一名逆袭成功率也不低

总得来说期望我们注重复试

评论