Muallif:
__thecrash__,
1 hafta oldin,
Tizimdagi reyting tizimi Elo asosidagi algoritmga tayanadi. Reyting faqat "Reytingli" deb belgilangan musobaqalarda, musobaqa yakunlangach hisoblanadi.
1. Kutilgan o'rin (Seed)
Har bir ishtirokchi uchun, uning joriy reytingiga qarab, musobaqada qanday o'rinni egallashi kutilgani hisoblanadi. Buning uchun ikkita ishtirokchi orasidagi g'alaba ehtimoli quyidagi formula bilan topiladi:
\(P(A, B) = \frac{1}{1 + 10^{\frac{R_B - R_A}{400}}}\)
Bu yerda \(R_A\) va \(R_B\) — mos ravishda \(A\) va \(B\) ishtirokchilarning joriy reytinglari. Formula shuni bildiradi: reytinglar farqi qancha katta bo'lsa, yuqori reytingli ishtirokchining g'alaba qozonish ehtimoli shuncha yuqori bo'ladi.
Har bir ishtirokchi uchun kutilgan o'rin (seed) — u boshqa barcha ishtirokchilardan "yutib chiqish" ehtimollari yig'indisi orqali topiladi:
\(\text{Seed}_i = 1 + \sum_{j \neq i} P(j, i)\)
2. Haqiqiy natija bilan solishtirish
Musobaqa tugagach, har bir ishtirokchining haqiqiy o'rni (standings jadvalidagi joyi) bilan uning kutilgan o'rni (seed) solishtiriladi. Ikkalasining geometrik o'rtachasi olinadi:
\(\text{Target}_i = \sqrt{\text{Seed}_i \times \text{Rank}_i}\)
Shu "maqsad" o'rniga mos keladigan reyting qiymati ikkilik qidiruv (binary search) orqali topiladi — bu, aslida, "agar bu ishtirokchi shu natijani ko'rsatishi kutilgan bo'lsa, uning reytingi qancha bo'lishi kerak edi" degan savolga javob.
3. Reyting o'zgarishi (Delta)
Yangi hisoblangan "kutilgan reyting" bilan ishtirokchining joriy reytingi orasidagi farqning yarmi olinadi:
\(\Delta_i = \frac{R_{\text{expected}} - R_{\text{current}}}{2}\)
Farqning to'liq emas, faqat yarmi olinishi — reytingning bir marta musobaqada haddan tashqari keskin o'zgarib ketmasligi, balki bir necha musobaqa davomida asta-sekin to'g'ri darajaga kelishi uchun qilingan.
4. Yangi ishtirokchilar uchun tezlashtirilgan o'zgarish (K-omil)
Kam sonli musobaqada qatnashgan (tajribasi kam) ishtirokchilarning reytingi tezroq to'g'ri darajaga kelishi kerak, chunki dastlabki reyting (1600) haqiqiy darajani aks ettirmasligi mumkin. Shu sabab, birinchi 20 ta musobaqa davomida quyidagi ko'paytiruvchi qo'llaniladi:
\(K = 1 + (20 - N) \times 0.05, \quad N < 20\)
Bu yerda \(N\) — ishtirokchining shu vaqtgacha qatnashgan reytingli musobaqalar soni. Masalan:
| Qatnashgan musobaqalar soni (N) | K-omil | Ta'sir |
| 0 | 2.0 | Reyting o'zgarishi 2 barobar kuchliroq |
| 10 | 1.5 | 1.5 barobar kuchliroq |
| 20 va undan ko'p | 1.0 | Standart (o'zgarishsiz) |
Yakuniy o'zgarish:
\(\Delta_i^{\text{actual}} = \Delta_i \times K_i\)
5. Muvozanatlash (Zero-sum tuzatish)
Musobaqadagi barcha ishtirokchilarning reyting o'zgarishlari yig'indisi nolga yaqin bo'lishi kerak — ya'ni kimningdir reytingi ko'tarilsa, boshqa birovlarniki tushishi kerak (umumiy tizim "muvozanatda" qolishi uchun). Shu sabab, yakuniy bosqichda barcha o'zgarishlardan o'rtacha qiymat ayiriladi:
\(\Delta_i^{\text{final}} = \Delta_i^{\text{actual}} - \overline{\Delta}\)
6. Reytingning qo'llanilishi
Yakuniy natija butun songa yaxlitlanadi va ishtirokchining reytingiga qo'shiladi:
\(R_{\text{new}} = R_{\text{current}} + \Delta_i^{\text{final}}\)
| # | Foydalanuvchi | Reyting |
|---|---|---|
| 1 | comoyun | 1993 |
| 2 | az1mov__ww | 1954 |
| 3 | baxriddinovich_dev | 1924 |
| 4 | mohenurmurtozaqula | 1843 |
| 5 | shohrux18uz | 1838 |