Jump to content
Korean Random
TurinDeNar

[Формула расчета шансов на победу / Chance to win formula]

Recommended Posts

Да, актуальность формулы бы проверить.

статлог вроде так и не вернулся к жизни...

Share this post


Link to post

Short link
Share on other sites

актуальность формулы бы проверить

дак ничего не поменялось с тех пор

Share this post


Link to post

Short link
Share on other sites

дак ничего не поменялось с тех пор

Ввести бы в формулу соответствие техники определённой карте, но это ж сколько статы нужно... Поясню - сказать, какая команда победит гораздо проще, зная карту.

Share this post


Link to post

Short link
Share on other sites

Ввести бы в формулу

Ты говоришь о новой формуле, а не о текущей "актуальность формулы бы проверить".

Вообще в текущую формулу заложен расчет по технике. Надо для начала его вернуть. Для этого надо вернуть teff. Для этого нужна стата. Стату насколько дней назад собрали, но не так, как нужно. Собирают снова :-)

Далее я вижу следующий шаг к усовершенствованию- это учет имбовости танка и взводов. Одно дело у нас три соло мауса, другое взвод хэвиков а wn8 и teff у них допустим одинаковы.

И уж только потом за карты браться

Edited by seriych

Share this post


Link to post

Short link
Share on other sites
это учет имбовости танка и взводов.

 

 Сначала бы научить алгоритм вычислять твинков. Или хотя бы твинк-прогноз по каждому игроку делать, типа "PlayerA" твинк - 75%, "PlayerB" твинк - 9%

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

Сначала бы научить алгоритм вычислять твинков

Это невозможно в принципе. А для расчета через teff и неважно.

Share this post


Link to post

Short link
Share on other sites

 

 

Это невозможно в принципе.

Почему? Почему я могу, ты можешь, @StranikS_Scan может, а компьютер не может?

Уточню, я не говорю о 100% точности, я говорю о вероятности.

Share this post


Link to post

Short link
Share on other sites

Почему?

потому что сначала никто не говорил о вероятности.

Почему я могу, ты можешь, StranikS_Scan может

я не могу. Ну допустим фиолет с 500 боями- твинк 99%. А вот остальное уже фиг знает.

 

Но допустим мы что-то там научились вычислять и даже довольно точно. Вопрос: а нафига? Что нам это даст-то?

Share this post


Link to post

Short link
Share on other sites

 

 

Что нам это даст-то?

1. Поправку на то, что у человека больше боев на самом-то деле.

2. Поправку на рейтинг, да и другие стат. показатели.

 

Как минимум это. А вот как эти поправки считать и использовать - другой вопрос.

Share this post


Link to post

Short link
Share on other sites

А вот как эти поправки считать

Вот именно. По сути с точки зрения математики нет отдельного сильно отличающегося понятия твинка. Одни игроки проводят 20к боев и ни разу не задумываются о происходящем, другие после 10к боев вдруг начинают к чему-то стремиться, третьи после первой 1000 боев гайдики посматривать начинают, четвертые приходят в игру вместе с опытным совзводным и учатся сразу, а твинк это лишь следующая ступенька в этой лестнице (которая на самом деле не лестница, а плавная кривая)

Share this post


Link to post

Short link
Share on other sites

 

 

я не могу. Ну допустим фиолет с 500 боями- твинк 99%. А вот остальное уже фиг знает.

 

Ну понятно что это будет довольно приближенно, но всё же различные критерии можно по напридумывать...

 

Есть ветка танков например ветка бэтшата, пусть есть два игрока, у одного более 2/3 танков ветки выкачены, а у другого менее 1/3, причем бэтшат есть у обоих. Достаточно этого чтобы второго игрока по отношению к ветке бэтшата можно считать твинком? Думаю да. Ветка у него твинковая, т.е. его бэтшат - это твинк.

 

Теперь еще критерий, все думаю помнят рейтинг Туриста? Там одним из элементов алгоритма был поперечный анализ, когда сравнивались машины одной категории. По аналогии можно заюзать критерий: прокачка кактусов - выкачал менее 1/3 кактусов - значит твинк. Прошелся по кактусам, значит не твинк. Только твинки обходят кактусов.

Share this post


Link to post

Short link
Share on other sites

Неправильно задачу ставим. Зачем нам знать - твинк или нет?

Чтобы правильно считать, как игрок играет сейчас.

Т.е. нужна стата за срез. Всё.

Share this post


Link to post

Short link
Share on other sites

Неправильно задачу ставим.

Т.е. нужна стата за срез. Всё.

Статы за срез нет. Всё. go to 0

Share this post


Link to post

Short link
Share on other sites

 

 

Можно хоть сейчас поставить самый обычный рандомайзер, подписать - "Шанс на по беду" и выкинуть на просторы как очередной мега-ванга-мод. И будет работать не хуже чем текущий.

 

 

доверять этим % смешно.

Прежде чем делать подобные заявления, советую ознакомиться:

1) http://forum.worldoftanks.com/index.php?/topic/174317-1000-games-with-xvm/

2) http://www.koreanrandom.com/forum/topic/2598-формула-расчета-шансов-на-победу-chance-to-win-formula/page-28#entry86894

3) http://www.koreanrandom.com/forum/topic/2598-формула-расчета-шансов-на-победу-chance-to-win-formula/page-9#entry34553

Share this post


Link to post

Short link
Share on other sites

Прежде чем делать подобные заявления, советую ознакомиться:

 

"Ты чего это, понимаешь ли, мне мои счета показываешь?" (С) БНЕ

 

Прежде чем бросаться в бой с шашкой наголо, советую вникнуть в читаемое. Суть была не в том, на сколько точно считает XVM, а в том, что конечный пользователь схавает любой фуфлыжный алгоритм, включая обычный рандомайзер, хотя бы тому что не видит реальной разницы. Как результат начинать бороться с подобными модами - это только подогревать аудиторию.

 

Хочешь в этом убедиться? Зайди вот сюда - тыц.

 

Одна вот эта выдержка вызывает дикий смех:

 

Мод при наведении на игрока определяет текущую дисперсию.

Если дисперсия определилась выше 2.0 то мод вычитает из неё 0.001 и рядом за дисперсией плюсует к счётчику +1.

Вот и вся работа мода...

помогает но не всегда

Очень нужен этот мод

Исходник

global oo000
import BigWorld
import GUI
global ii
from gui . WindowsManager import g_windowsManager
import Vehicle
from gui import SystemMessages
from gui . Scaleform . daapi . view . lobby . LobbyView import LobbyView
from debug_utils import *
ii = None
oOOo = 0
O0 = { 'pre_depression_string' : '  :' }
oo000 = True
o0O = 'LSDMAX(C) Dispersion Mod. www.4cheat.ru'
if 10 - 10: O0O0OO0O0O0
if 5 - 5: iiI / ii1I
ooO0OO000o = LobbyView . _populate
if 4 - 4: IiII1IiiIiI1 / iIiiiI1IiI1I1
def o0OoOoOO00 ( self ) :
    global oo000
    ooO0OO000o ( self )
    if oo000 :
        SystemMessages . pushI18nMessage ( o0O , type = SystemMessages . SM_TYPE . Warning )
        oo000 = False
        if 27 - 27: OOOo0 / Oo - Ooo00oOo00o . I1IiI
        if 73 - 73: OOooOOo / ii11ii1ii
LobbyView . _populate = o0OoOoOO00
if 94 - 94: OoOO + OoOO0ooOOoo0O + o0000oOoOoO0o * o00O0oo
def O0oOO0o0 ( ) :
    if hasattr ( BigWorld , 'player' ) :
        return True
    else :
        return False
        if 9 - 9: o0o - OOO0o0o
def Ii1iI ( ) :
    global ii
    global oOOo
    if O0oOO0o0 ( ) and ( ii is not None ) :
        OoI1Ii11I1Ii1i = BigWorld . target ( )
        if OoI1Ii11I1Ii1i is None :
            if ii is not None :
                ii . visible = False
            BigWorld . callback ( 0.1 , Ii1iI )
        else :
            Ooo = round ( BigWorld . player ( ) . getOwnVehicleShotDispersionAngle ( 0.0 ) * 100 , 1 )
            for o0oOoO00o in BigWorld . entities . values ( ) :
                if type ( o0oOoO00o ) is Vehicle . Vehicle :
                    if o0oOoO00o . isAlive ( ) :
                        if o0oOoO00o . publicInfo [ 'team' ] is BigWorld . player ( ) . team :
                            if 43 - 43: O0OOo . II1Iiii1111i
                            if ( Ooo >= 2.1 ) :
                                i1IIi11111i = Ooo - 0.001
                                o000o0o00o0Oo = BigWorld . player ( ) . vehicleTypeDescriptor
                                oo = o000o0o00o0Oo . gun [ 'shotDispersionFactors' ]
                                oo [ 'afterShotInBurst' ] = i1IIi11111i
                                oo [ 'whileGunDamaged' ] = i1IIi11111i
                                oo [ 'turretRotation' ] = i1IIi11111i
                                oo [ 'afterShot' ] = i1IIi11111i
                                oOOo += 1
            IiII1I1i1i1ii = O0 [ 'pre_depression_string' ] + str ( oOOo )
            ii . text = str ( round ( Ooo , 1 ) ) + IiII1I1i1i1ii
            ii . visible = True
            if 44 - 44: OOo0o0 / o00O0oo - o0000oOoOoO0o % iiI + o0000oOoOoO0o
            if 34 - 34: o00O0oo * Oo
            BigWorld . callback ( 0.1 , Ii1iI )
    else :
        BigWorld . callback ( 0.1 , Ii1iI )
        if 31 - 31: OOOo0 + I1IiI . II1Iiii1111i
Ii1iI ( )
def OoOooOOOO ( ) :
    global ii
    global oOOo
    if ii is None :
        ii = GUI . Text ( '' )
        GUI . addRoot ( ii )
        ii . widthMode = 'PIXEL'
        ii . heightMode = 'PIXEL'
        ii . verticalPositionMode = 'PIXEL'
        ii . horizontalPositionMode = 'PIXEL'
        ii . horizontalAnchor = 'LEFT'
        ii . colour = ( 255 , 0 , 0 , 255 )
        ii . font = 'verdana_medium.font'
        ii . visible = False
        i11iiII , I1iiiiI1iII = GUI . screenResolution ( )
        ii . position = ( i11iiII * 0.5 , I1iiiiI1iII * 0.2 , 0.7 )
        if 20 - 20: iIiiiI1IiI1I1 + O0O0OO0O0O0 - o0o % I1IiI . IiII1IiiIiI1
        if 96 - 96: iIiiiI1IiI1I1 . OOooOOo * o0000oOoOoO0o % OOo0o0
def OO0O0O00OooO ( ) :
    global ii
    global oOOo
    if ii is not None :
        ii . visible = False
        if 77 - 77: OOOo0 - OOOo0 . Oo / ii11ii1ii
g_windowsManager . onInitBattleGUI += OoOooOOOO
g_windowsManager . onDestroyBattleGUI += OO0O0O00OooO 

Share this post


Link to post

Short link
Share on other sites

 

 

Суть была не в том, на сколько точно считает XVM
Но написано совсем не это:

 

 

самый обычный рандомайзер ... будет работать не хуже чем текущий
 

Share this post


Link to post

Short link
Share on other sites

Помогите, плизз- в загрузке боя не отражается % на победу и в дальнейшем в самом бою при нажатии Ctrl также % не высвечивается, что нужно сделать ? 

П.с версия оленемера самая новая 

Share this post


Link to post

Short link
Share on other sites

@TurinDeNar, @sirmax,

 Заменить это:

10. Wa, We - вероятность победы (для союзников и противников) Wa = (0,5 + (Ea / (Ea + Ee) - 0,5) * 1,5) * 100% для союзников, We = (0,5 + (Ee / (Ee + Ea) - 0,5) * 1,5) * 100% для противников)

на:

Wa = 100 / ( 1 + 10^( (Ee-Ea)/200 ) ), Wb = 1-Wa

При этом получаем:

1) среднеквадратичное отклонение процента от 50% практически такое же, как у текущей формулы, то есть в среднем шансы будут отклоняться от 50% на столькоже, насколько сейчас, и пользователи ничего не заметят, даже если цифорку шанса рисовать

2) моя функция оценки качества формул говорит, что формула стала лучше

3) не надо заморачиваться с обратным пересчетом шанса в силу команд и сразу брать полоски пропорционально Ea и Ee- это и есть сила команд

Оценка:

post-8781-0-73924400-1413740404_thumb.png

Ф1 - текущая формула, Ф3 - предлагаемая.

 

Только так как шанс пропорционален разности рейтингов, а не их отношению, а при расчете Ee и Ea у нас тупо суммируются показатели игроков, то для расчета шансов надо (Ee-Ea) нормализовать к значению, как будто игроков всегда 30:

Wa = 100 / ( 1 + 10^( (Ee-Ea)*(30/N)/200 ) )

где N - суммарное количество живых игроков в командах

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...