Вероятность успеха на повторном экзамене
Мы прошли через повторный экзамен, и теперь мы попробуем использовать математический метод для расчёта вашей вероятности успеха.
Вероятность
Например, если было набрано 12 человек из общего числа кандидатов в 20 человек, то существует $C_{20}^{12}$ возможных комбинаций. Если вы были выбраны специально, то остаётся только $C_{19}^{11}$ возможных комбинаций для остальных кандидатов.
Таким образом, ваша вероятность успеха составляет:
$\frac{C_{19}^{11}}{C_{20}^{12}}=\frac{19\times18\times...\times11}{20\times19\times...\times12}=\frac{11}{20}=55%$.
Однако это не совсем верно, поскольку выбор не является случайным, а зависит от результатов первого экзамена.
Анализ повторного экзамена
Доля участия
Если результат первого экзамена составляет 350 баллов (если это экзамен по управлению, пожалуйста, измените значение), а доля участия в повторном экзамене составляет 50%, например, результат повторного экзамена равен 75 баллам, тогда:
$50\times\frac{350}{500} + 50\times\frac{75}{100} = 72.5$.
Возможно, в некоторых школах доля участия в повторном экзамене отличается, поэтому необходимо скорректировать соответствующие параметры.
Распределение баллов
Баллы за повторный экзамен обычно находятся в диапазоне от 60 до 100, и очень редко они ниже 60. Однако большинство баллов должно быть в среднем диапазоне от 70 до 80, а баллы выше 90 встречаются довольно редко.
Поэтому график распределения баллов должен представлять собой функцию, которая имеет асимметричное распределение с пиком в середине.
f(x) = x^3^
Это гарантирует, что среднее распределение значений x будет приводить к асимметричному распределению значений y с меньшим количеством положительных и отрицательных экстремумов.
Нам нужно преобразовать эту функцию так, чтобы она представляла собой распределение от 0 до 1 для удобства использования random для генерации случайных чисел.
f(x) = (2x - 1)^3^
Теперь мы можем определить функцию, которая будет давать нам баллы в диапазоне от 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
Разброс результатов всё ещё довольно большой.
Статистическая проверка случайности
Вернёмся к исходным условиям:
Проведём симуляцию, чтобы оценить вероятность этого события.
Симуляция играет важную роль в области искусственного интеллекта, особенно в методах Монте-Карло.
Класс
import pandas as pd
class Aggregate:
def __init__(self):
pass
def preliminary(self, xls, id, rank):
"""
Первичный экзамен
xls — таблица результатов
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
После создания класса Aggregate мы загрузим таблицу результатов предварительного экзамена, установим ваш идентификатор как 10014 и общее количество отобранных кандидатов как 12.
agg = Aggregate()
agg.preliminary('./preliminary.xlsx', 10014, 12)
agg.df
Затем мы можем посмотреть на данные:
Идентификатор | Баллы |
---|---|
10001 | 400 |
10002 | 381 |
10003 | 380 |
10004 | 376 |
10005 | 373 |
10006 | 372 |
10007 | 370 |
10008 | 362 |
10009 | 361 |
10010 | 359 |
10011 | 353 |
10012 | 351 |
10013 | 350 |
10014 | 350 |
10015 | 350 |
10016 | 349 |
10017 | 349 |
10018 | 348 |
10019 | 348 |
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%.
Заключение
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )