用模拟预测考研复试通过率

考研复试模拟与成功率分析
该博客通过数学和模拟方法分析考研复试成功率,考虑初试成绩和复试权重。介绍了如何构建复试分数分布函数,以及如何通过模拟计算不同名次考生的上岸概率。结果显示,落后2名的考生上岸概率约52.4%,而第一名和最后一名的概率分别为89.6%和42.4%。强调了复试的重要性。

考研复试通过率

考研复试了,我们尝试用数学方法算一下你的上岸成功率

概率

比如招生12人,初试上线的总共20人

按照概率,总共有 C 20 12 C_{20}^{12} C2012种可能性

你上线,就是把你专门拿出来,剩下的再组合一下,就是 C 19 11 C_{19}^{11} C1911种可能性

所以你的上岸成功率是 C 19 11 C 20 12 = 19 × 18 × . . . × 11 20 × 19 × . . . × 12 = 11 20 = 55 % \frac{C_{19}^{11}}{C_{20}^{12}}=\frac{19\times18\times...\times11}{20\times19\times...\times12}=\frac{11}{20}=55\% C2012C1911=20×19×...×1219×18×...×11=2011=55%

但是这样是不对的,因为不是随机取,是有权重的!就是初试成绩

复试分析

占比

一个人初试成绩350(如果管理类联考,请改一下分值),复试占比50%,比如复试成绩是75,那么——

50 × 350 500 + 50 × 75 100 = 72.5 50\times\frac{350}{500} + 50\times\frac{75}{100} = 72.5 50×500350+50×10075=72.5

也许有的学校的复试占比不一样,那么就要改一下各个参数

分值分布

复试的分数,基本在60 ~ 100之间,基本不会有60以下,但是大部分应该都在中间的70 ~ 80,60多和90多都比较少

所以分布图应该是一个奇函数的幂函数

f(x) = x3

奇函数

这样可以保障平均分布的x会产生y的正负极值分布都会少一些

我们需要把函数做一定处理,首先,要搞成0 ~ 1的函数分布,方便使用random随机

f(x) = (2x - 1)3

奇函数改造

定义域可以之后取0 ~ 1了

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

得到函数——

f(x) = 20(2x - 1)3 + 60

最终函数

从图中可以看出来,70以下很少,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

浮动还是蛮大的

随机统计验证

我们回到最开始——

  1. 招生12人
  2. 上线20人
  3. 你初试分数350
  4. 初试排名14

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

我们来做一下模拟,看看概率

模拟在人工智能中是很重要的一部分,比如“蒙特卡洛”就是模拟算法

import pandas as pd
class Aggregate:
    def __init__(self):
        pass
    def preliminary(self, xls, id, rank):
        """
        初试成绩
        xls 成绩表
        id  参考人id
        rank    录取名次
        """
        self.df = pd.read_excel(xls)
        self.id = id
        self.rank = rank
    def reexam(self, seed=1):
        """
        模拟复试分数
        """
        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="总分", ascending=False)
        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

你的上岸成功率

我们初试化类之后,载入分数列表,设置你的id,以及录取人数

agg = Aggregate()
agg.preliminary('./preliminary.xlsx', 10014, 12)
agg.df

我们读取了preliminary.xlsx文件,设置10014为你的编号,总共录取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	350
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('./preliminary.xlsx', 10001, 12)
agg.sim()

结果是89.6%

最后一名的上岸成功率

agg = Aggregate()
agg.preliminary('./preliminary.xlsx', 10020, 12)
agg.sim()

结果是42.4%

总结

  1. 落后2名,你只有一半几率上岸
  2. 第一名也不是100%上岸,只有9成把握
  3. 最后一名逆袭成功率也不低

总得来说,希望大家重视复试

内容概要:本文主要介绍了一项关于四足机器人轨迹优化四足机器人轨迹优化研究(Matlab代码实现)的研究,重点在于利用Matlab代码实现轨迹优化算法。通过对四足机器人运动学与动力学模型的建立,结合优化算法(如非线性模型预测控制、智能优化算法等),实现机器人在复杂地形下的稳定行走与高效路径规划。文中详细阐述了优化目标的设计,包括步态稳定性、能耗最小化、关节力矩平滑性等,并通过Matlab仿真验证了所提方法的有效性和鲁棒性。此外,文档还列举了多个相关研究方向和技术应用,展示了该领域与其他智能控制、路径规划及多传感器融合技术的紧密联系。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能机器人、运动控制、路径规划等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于四足机器人步态生成与轨迹优化算法的开发与仿真验证;②为复杂环境下移动机器人运动控制提供解决方案;③支持科研教学中对非线性优化、模型预测控制等高级控制策略的学习与实践。; 阅读建议:建议读者结合提供的Matlab代码进行实际操作,深入理解轨迹优化的数学建模过程与求解方法,同时可参考文中提到的协同路径规划、多传感器融合等扩展内容,拓展研究思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值