Samcoding Reytingi

Muallif: __thecrash__, 1 hafta oldin, uz

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}}\)

Navbatdagi musobaqa

Top foydalanuvchilar

# Foydalanuvchi Reyting
1 comoyun 1993
2 az1mov__ww 1954
3 baxriddinovich_dev 1924
4 mohenurmurtozaqula 1843
5 shohrux18uz 1838