1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #1 Опубликовано: 16 дек 2020, 13:10:58 Всем привет! Вот и случилось, то что все давно ждали, а именно изменение системы ранговых боёв. Я услышал много рассуждений вроде: звёзд от лиги к лиге больше и играть на взятие первого ранга надо будет дольше. А вот на сколько больше боёв надо сделать? И тут нам на помощь приходит математика. Вооружаемся цепями Маркова, это такой не сложный статистический метод оценки вероятности перехода системы между состояниями. А продвижение по ранговой лестнице с получением и потерей звёзд и есть переходы между "состояниями". Запускаем python ноутбук с установленными пакетами numpy и matplotlib (поищите по словам python jupyter). Копипастим немного кода раз: Скрытый текст # подключаем библиотеки import numpy as np import matplotlib.pyplot as plt ### вспомогательные функции ### # функция составляющая на основании правил граф переходов между состояниями def make_states(rank_rules): states = [] for rank in rank_rules: for star_num in range(rank_rules[rank]['stars']): states.append({ 'rank': rank, 'star_num': star_num, 'is_safe': (star_num == 0) and (rank_rules[rank]['is_safe'] == 1), }) return states # матрица переходов между состояниями def make_transition_matrix(states, win_rate): # заполняем нулями P = np.zeros((len(states), len(states))) # в случае победы переходим в новое состояние: for i in range(len(states)-1): P[i][i + 1] = win_rate # в случае поражения остаёмся в текущем: for i in range(len(states)-1): # при условии несгораемого ранга if states[i]['is_safe']: P[i][i] = 1.0 - win_rate elif i > 0: # или переходим в предыдущее P[i][i - 1] = 1.0 - win_rate # для первого ранга вероятность 100% P[len(states)-1][len(states)-1] = 1.0 return P # построение графика вероятности получения первого ранга def make_plot(rank_rules, win_rate, limit): states = make_states(rank_rules) P = make_transition_matrix(states, win_rate) N = P.copy() X = [] Y = [] x = 1.0 while True: y = N[0][len(states)-1] X.append(x) Y.append(y) if y > limit: break N = np.matmul(P, N) x += 1.0 return X,Y и два: Скрытый текст # правила лиги: ranks = { 'bronse': { 7: {'stars': 1, 'is_safe': 1}, 6: {'stars': 1, 'is_safe': 1}, 5: {'stars': 1, 'is_safe': 1}, 4: {'stars': 2, 'is_safe': 0}, 3: {'stars': 2, 'is_safe': 1}, 2: {'stars': 2, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, 'silver': { 7: {'stars': 1, 'is_safe': 1}, 6: {'stars': 2, 'is_safe': 0}, 5: {'stars': 2, 'is_safe': 1}, 4: {'stars': 2, 'is_safe': 0}, 3: {'stars': 2, 'is_safe': 0}, 2: {'stars': 3, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, 'gold': { 10: {'stars': 1, 'is_safe': 1}, 9: {'stars': 2, 'is_safe': 0}, 8: {'stars': 2, 'is_safe': 0}, 7: {'stars': 2, 'is_safe': 0}, 6: {'stars': 2, 'is_safe': 0}, 5: {'stars': 2, 'is_safe': 0}, 4: {'stars': 2, 'is_safe': 0}, 3: {'stars': 3, 'is_safe': 0}, 2: {'stars': 3, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, } # параметры игрока: win_rate = 0.5 # строим графики вероятности получения 1-го ранга на N боёв lines = [] for league in ['bronse', 'silver', 'gold']: X, Y = make_plot(ranks[league], win_rate, 0.99) line, = plt.plot(X, Y, label='{} ({})'.format(league, X[-1])) lines.append(line) plt.legend(handles=lines, loc='lower right') plt.grid(b=True, color='black', alpha=0.3, linestyle='-', linewidth=1) plt.show() И можно наглядно увидеть сколько боёв для достижения первого ранга с вероятностью 99% надо сделать. 45%: Скрытый текст 50%: Скрытый текст 65%: Скрытый текст Всем удачи в боях! С уважением, Максим PS: пояснение по осям графиков: стоя - вероятность лёжа - количество боёв PPS: модель не учитывает механику сохранения звёзд, но пытливый человек сможет легко её "прикрутить" 18 2 2 Рассказать о публикации Ссылка на публикацию
2 617 [-GG-] truzones Бета-тестер 3 778 публикаций 20 235 боёв Жалоба #2 Опубликовано: 16 дек 2020, 14:04:50 Спасибо за расчеты, но увы я гуманитарий 1 2 Рассказать о публикации Ссылка на публикацию
1 769 [GANG] TomoGavkus Участник 1 099 публикаций 20 436 боёв Жалоба #3 Опубликовано: 16 дек 2020, 14:14:31 пили уж кулькулятор сразу, чтоб циферки подставлять 1 1 1 Рассказать о публикации Ссылка на публикацию
1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #4 Опубликовано: 16 дек 2020, 14:29:26 Сегодня в 16:13:22 пользователь kostyn80 сказал: Или это спецом , для разного читателя ? привет! Совершенно верно - чисто разбавить "сухой" текст)) можно было про абсцисс и ординат конечно)) 1 1 Рассказать о публикации Ссылка на публикацию
55 430 [9-MAY] Tolik_koromyslo Старший бета-тестер, Коллекционер 10 872 публикации Жалоба #5 Опубликовано: 16 дек 2020, 14:35:27 Вот и берут потом таких в Лесту, а мы мучаемся 7 Рассказать о публикации Ссылка на публикацию
3 730 [GAZ3L] Erbatyr Участник 1 786 публикаций 19 969 боёв Жалоба #6 Опубликовано: 16 дек 2020, 14:36:00 если держать 50% в рангах, значит чтобы закончить золотым дипломом мне нужно 1300 боёв...? моя не понимать... Рассказать о публикации Ссылка на публикацию
1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #7 Опубликовано: 16 дек 2020, 14:36:20 Сегодня в 16:14:31 пользователь TomoGavkus сказал: пили уж кулькулятор сразу, чтоб циферки подставлять Не уверен, что стОит времени на полноценную разработку. Речь ведь о чисто умозрительных вероятностях. Может просто повезти и я со своими 50% закончу бронзу за 10-15 боёв (1 на 1000 но может). Это упражнение для оценки порядка сложности прохождения лиг. С уважением, Максим Сегодня в 16:35:27 пользователь Tolik_koromyslo сказал: Вот и берут потом таких в Лесту, а мы мучаемся Старый я для Лесты 1 1 Рассказать о публикации Ссылка на публикацию
62 [DOG44] Ant_RB44R Участник 31 публикация 6 635 боёв Жалоба #8 Опубликовано: 16 дек 2020, 14:43:10 (изменено) Спасибо за расчеты)) Интересно было бы сравнение с прежней системой рангов. Больше или меньше нужно сыграть боев для 1 ранга. Может уже считали раньше? Изменено 16 дек 2020, 14:43:35 пользователем Puzan_s_motorom 1 1 Рассказать о публикации Ссылка на публикацию
55 430 [9-MAY] Tolik_koromyslo Старший бета-тестер, Коллекционер 10 872 публикации Жалоба #9 Опубликовано: 16 дек 2020, 14:45:03 Сегодня в 16:43:10 пользователь Puzan_s_motorom сказал: Спасибо за расчеты)) Интересно было бы сравнение с прежней системой рангов. Больше или меньше нужно сыграть боев для 1 ранга. Может уже считали раньше? Поддержу! Интересно сравнить. Рассказать о публикации Ссылка на публикацию
1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #10 Опубликовано: 16 дек 2020, 14:48:53 Сегодня в 16:43:10 пользователь Puzan_s_motorom сказал: Может уже считали раньше? Очень давно для второго или третьего сезона делал чисто для себя расчёты. Боюсь, что результаты не сохранил. Сегодня в 16:43:10 пользователь Puzan_s_motorom сказал: с прежней системой рангов Поищу инфу по прогрессу (количество рангов, несгораемые и кол-во звёзд). Если найду, то посчитать уже не долго будет Рассказать о публикации Ссылка на публикацию
Гость Гость 0 публикаций Жалоба #11 Опубликовано: 16 дек 2020, 14:55:18 Если расчеты автора верны, а сохранения звезд не вносят существенного вклада в результат, то для прохождения нового рангового сезона потребуется боев существенно больше, чем в прежних полноценных. Интересно было бы услышать ответ разработчиков, наверняка они делали свои расчеты и готовы ими поделиться 1 1 Рассказать о публикации Ссылка на публикацию
1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #12 Опубликовано: 16 дек 2020, 14:57:36 (изменено) Ух ты как интересно получилось: для 50% сравнение с 16-м сезоном: Скрытый текст получается, что новая система в РАЗЫ лояльнее к игрокам. 65%: Скрытый текст с повышением винрейта пропорция лояльности рангов снижается Сегодня в 16:55:18 пользователь Hans012 сказал: для прохождения нового рангового сезона потребуется боев существенно больше, чем в прежних полноценных похоже, что нет (нужно бы в модель новых рангов ещё квалификацию внести для совсем честного сравнения - это как доп. несгораемый ранг с 4 звёздами) Изменено 16 дек 2020, 14:59:34 пользователем qMBQx8GH_real 1 Рассказать о публикации Ссылка на публикацию
Гость Гость 0 публикаций Жалоба #13 Опубликовано: 16 дек 2020, 15:01:11 (изменено) Сегодня в 16:57:36 пользователь qMBQx8GH_real сказал: Ух ты как интересно получилось: для 50% сравнение с 16-м сезоном: Показать содержимое получается, что новая система в РАЗЫ лояльнее к игрокам. 65%: Показать содержимое с повышением винрейта пропорция лояльности рангов снижается похоже, что нет Я что-то не так понял? Для прохождения сезона с 65% винрейтом нужно 237 боя, а это как бы в 2-3 раза больше, чем было до этого upd: глянул свои ранговые, как раз при 65% винрейте получалось вдвое меньшее количество боев Изменено 16 дек 2020, 15:07:55 пользователем Hans012 Рассказать о публикации Ссылка на публикацию
1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #14 Опубликовано: 16 дек 2020, 15:10:06 (изменено) Если все лиги новых рангов объединить в одну "лестницу" с несгораемыми квалификациями между ними, то получаются такие графики: для 65% Скрытый текст на треть "легче" взять первый золотой ранг для 50%: Скрытый текст раза в два примерно. Сегодня в 17:01:11 пользователь Hans012 сказал: 237 боя, а это как бы в 2-3 раза больше, чем было до этого до этого было 274 UPD: код модельки: Скрытый текст # правила лиги: ranks = { 'bronse': { 7: {'stars': 1, 'is_safe': 1}, 6: {'stars': 1, 'is_safe': 1}, 5: {'stars': 1, 'is_safe': 1}, 4: {'stars': 2, 'is_safe': 0}, 3: {'stars': 2, 'is_safe': 1}, 2: {'stars': 2, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, 'silver': { 7: {'stars': 1, 'is_safe': 1}, 6: {'stars': 2, 'is_safe': 0}, 5: {'stars': 2, 'is_safe': 1}, 4: {'stars': 2, 'is_safe': 0}, 3: {'stars': 2, 'is_safe': 0}, 2: {'stars': 3, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, 'gold': { 10: {'stars': 1, 'is_safe': 1}, 9: {'stars': 2, 'is_safe': 0}, 8: {'stars': 2, 'is_safe': 0}, 7: {'stars': 2, 'is_safe': 0}, 6: {'stars': 2, 'is_safe': 0}, 5: {'stars': 2, 'is_safe': 0}, 4: {'stars': 2, 'is_safe': 0}, 3: {'stars': 3, 'is_safe': 0}, 2: {'stars': 3, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, 'season 17': { 24: {'stars': 1, 'is_safe': 1}, 23: {'stars': 1, 'is_safe': 1}, 22: {'stars': 1, 'is_safe': 1}, 21: {'stars': 2, 'is_safe': 0}, 20: {'stars': 2, 'is_safe': 1}, 19: {'stars': 2, 'is_safe': 0}, 18: {'stars': 4, 'is_safe': 1}, 17: {'stars': 1, 'is_safe': 1}, 16: {'stars': 2, 'is_safe': 0}, 15: {'stars': 2, 'is_safe': 1}, 14: {'stars': 2, 'is_safe': 0}, 13: {'stars': 2, 'is_safe': 0}, 12: {'stars': 3, 'is_safe': 0}, 11: {'stars': 4, 'is_safe': 1}, 10: {'stars': 1, 'is_safe': 1}, 9: {'stars': 2, 'is_safe': 0}, 8: {'stars': 2, 'is_safe': 0}, 7: {'stars': 2, 'is_safe': 0}, 6: {'stars': 2, 'is_safe': 0}, 5: {'stars': 2, 'is_safe': 0}, 4: {'stars': 2, 'is_safe': 0}, 3: {'stars': 3, 'is_safe': 0}, 2: {'stars': 3, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, 'season 16': { 18: {'stars': 1, 'is_safe': 1}, 17: {'stars': 2, 'is_safe': 1}, 16: {'stars': 2, 'is_safe': 1}, 15: {'stars': 2, 'is_safe': 1}, 14: {'stars': 2, 'is_safe': 0}, 13: {'stars': 2, 'is_safe': 0}, 12: {'stars': 2, 'is_safe': 1}, 11: {'stars': 2, 'is_safe': 0}, 10: {'stars': 4, 'is_safe': 0}, 9: {'stars': 4, 'is_safe': 0}, 8: {'stars': 4, 'is_safe': 0}, 7: {'stars': 4, 'is_safe': 0}, 6: {'stars': 4, 'is_safe': 0}, 5: {'stars': 5, 'is_safe': 0}, 4: {'stars': 5, 'is_safe': 0}, 3: {'stars': 5, 'is_safe': 0}, 2: {'stars': 5, 'is_safe': 0}, 1: {'stars': 0, 'is_safe': 0}, }, } # параметры игрока: win_rate = 0.50 # строим графики вероятности получения 1-го ранга на N боёв lines = [] for league in ['season 16', 'season 17']: X, Y = make_plot(ranks[league], win_rate, 0.99) line, = plt.plot(X, Y, label='{} ({})'.format(league, X[-1])) lines.append(line) plt.legend(handles=lines, loc='lower right') plt.grid(b=True, color='black', alpha=0.3, linestyle='-', linewidth=1) plt.show() Изменено 16 дек 2020, 15:11:25 пользователем qMBQx8GH_real Рассказать о публикации Ссылка на публикацию
1 045 [TRYBA] BKYCHbIN_KOJIO6OK Участник 1 238 публикаций 23 236 боёв Жалоба #15 Опубликовано: 16 дек 2020, 15:11:05 Лучше бы я этого не видел. Я думал ранги облегчили в который раз, а если верить расчетам, то наоборот усложнили? Хотя мат. модель не учитывает сохранение звезды и квалификацию и может все будет тоже самое. Я запутался елки палки. Рассказать о публикации Ссылка на публикацию
1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #16 Опубликовано: 16 дек 2020, 15:12:58 а вот если добавить ещё три прохождения золотой лиги.... стоп! я пожалуй пока пас)) Сегодня в 17:11:05 пользователь vov4ik_strelok_15 сказал: Я думал ранги облегчили в который раз, а если верить расчетам, то наоборот усложнили? Хотя мат. модель не учитывает сохранение звезды и квалификацию и может все будет тоже самое. Если цель получить первый ранг золотой лиги, то вывод однозначно стало легче (с учётом квалификаций). Причём чем ниже винрейт игрока, тем более легче стало. Рассказать о публикации Ссылка на публикацию
1 045 [TRYBA] BKYCHbIN_KOJIO6OK Участник 1 238 публикаций 23 236 боёв Жалоба #17 Опубликовано: 16 дек 2020, 15:16:21 Сегодня в 18:12:58 пользователь qMBQx8GH_real сказал: а вот если добавить ещё три прохождения золотой лиги.... стоп! я пожалуй пока пас)) Если цель получить первый ранг золотой лиги, то вывод однозначно стало легче (с учётом квалификаций). Причём чем ниже винрейт игрока, тем более легче стало. Спасибо. Значит мои предположения потвердились. Рассказать о публикации Ссылка на публикацию
Гость Гость 0 публикаций Жалоба #18 Опубликовано: 16 дек 2020, 15:20:51 Сегодня в 17:10:06 пользователь qMBQx8GH_real сказал: Если все лиги новых рангов объединить в одну "лестницу" с несгораемыми квалификациями между ними, то получаются такие графики: А как тогда с винрейтом в районе 65% у меня было вдвое меньше боев, значит звезды так сильно влияют на конечный результат? И тогда еще вопрос: а если сопоставить награды и количество боев? Рассказать о публикации Ссылка на публикацию
1 587 [0RZ] qMBQx8GH Мододел, Коллекционер 831 публикация 20 981 бой Жалоба #19 Опубликовано: 16 дек 2020, 15:25:16 Сегодня в 17:20:51 пользователь Hans012 сказал: А как тогда с винрейтом в районе 65% у меня было вдвое меньше боев речь о вероятности. вам повезло)) отложите по оси X свои бои, проведите мысленно линию вверх до пересечения с графиком и узнаете в какой процент счастливчиков вы попали. Сегодня в 17:20:51 пользователь Hans012 сказал: И тогда еще вопрос: а если сопоставить награды и количество боев? знать бы как... Рассказать о публикации Ссылка на публикацию
Гость Гость 0 публикаций Жалоба #20 Опубликовано: 16 дек 2020, 15:38:55 Сегодня в 17:25:16 пользователь qMBQx8GH_real сказал: речь о вероятности. вам повезло)) отложите по оси X свои бои, проведите мысленно линию вверх до пересечения с графиком и узнаете в какой процент счастливчиков вы попали. Вряд ли дело в везении. На Прошипсе есть статистика по рангам, за 16 и 18 сезон количество боев у игроков с 65% было не выше 130 Сегодня в 17:25:16 пользователь qMBQx8GH_real сказал: знать бы как... Да я бы и сам мог, но что-то пока лень искать и разбираться. В инфе по рангам есть эта инфа Рассказать о публикации Ссылка на публикацию