Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में ELO रेटिंग एल्गोरिदम


ELO रेटिंग एल्गोरिदम प्रतिस्पर्धी खेलों में खिलाड़ियों को रैंक करने के लिए उपयोग किया जाने वाला एक रेटिंग एल्गोरिदम है। प्रतियोगिता में खिलाड़ी की रैंकिंग रेटिंग पर आधारित होती है जो खिलाड़ी के प्रदर्शन के आधार पर बदलती है:

दो अलग-अलग रेटिंग वाले खिलाड़ियों के बीच खेल के लिए। मान लीजिए दो खिलाड़ी एक-दूसरे के खिलाफ प्रतिस्पर्धा कर रहे हैं:

खिलाड़ी 1                           खिलाड़ी 2

खिलाड़ी 1 की रेटिंग खिलाड़ी 2 से अधिक है।

यदि खिलाड़ी 1 खेल जीतता है तो कुछ अंक खिलाड़ी 1 से खिलाड़ी 2 को स्थानांतरित होंगे और इसके विपरीत यदि खिलाड़ी 2 जीतता है।

लेकिन जीत के लिए स्थानांतरित की जाने वाली रेटिंग की मात्रा स्थिर नहीं होती। बल्कि यह जीतने वाले व्यक्ति पर निर्भर करती है:

  • यदि खिलाड़ी 1 जीतता है, तो स्थानांतरित अंक कम होते हैं।
  • यदि खिलाड़ी 2 जीतता है, तो स्थानांतरित अंक अधिक होते हैं।

स्थानांतरित अंकों की मात्रा सूत्र पर निर्भर करती है:

खिलाड़ी 1 के लिए:

नई रेटिंग = पुरानी रेटिंग + रेटिंगकॉन्स्टेंट * (सक्सेसप्रोब - P1)

खिलाड़ी 2 के लिए:

नई रेटिंग = पुरानी रेटिंग + रेटिंगकॉन्स्टेंट * (सक्सेसप्रोब - P2)

यहां:

  • रेटिंगकॉन्स्टेंट एक स्थिरांक है, यह गेमिंग समुदाय द्वारा तय किया जाता है।
  • P1, खिलाड़ी 1 के जीतने की संभावना।
  • P2, खिलाड़ी 2 के जीतने की संभावना।
  • रेटिंग1 खिलाड़ी 1 की रेटिंग है।
  • रेटिंग2 खिलाड़ी 2 की रेटिंग है।
  • यदि कोई खिलाड़ी जीतता है तो सक्सेसप्रोब 1 है अन्यथा 0।

ELO रेटिंग एल्गोरिदम की कार्यप्रणाली समझने के लिए उदाहरण:

इनपुट: रेटिंग1 = 782, रेटिंग2 = 1432,
रेटिंगकॉन्स्टेंट = 100, खिलाड़ी 1 खेल जीतता है।

आउटपुट: रेटिंग1 = 780, रेटिंग2 = 1434

व्याख्या:

खिलाड़ी 1 जीतता है,

खिलाड़ी 1 के लिए:

सक्सेसप्रोब = 1

नई रेटिंग = 782 + 100*(1 - 0.98) = 782 + 100*(0.02) = 782 + 2 = 784

खिलाड़ी 2 के लिए:

सक्सेसप्रोब = 0

नई रेटिंग = 1432 + 100*(0 - 0.02) = 1432 - 2 = 1430

ELO रेटिंग एल्गोरिदम की कार्यप्रणाली को दर्शाने वाला प्रोग्राम:

उदाहरण

#include <bits/stdc++.h> 
using namespace std; 

void updateRatingUsingELoRating(float rating1, float rating2, int ratingConstant, bool player1SuccessProb) { 
    float P1, P2; 
    if (rating1 > rating2) { 
        P1 = (1.0 / (1.0 + pow(10.0, ((rating1 - rating2) / 400.0))) ); 
        P2 = 1 - P1; 
    } else { 
        P2 = (1.0 / (1.0 + pow(10.0, ((rating2 - rating1) / 400.0))) ); 
        P1 = 1 - P2; 
    } 
    
    if (player1SuccessProb == 1) { 
        rating1 = rating1 + ratingConstant * (1 - P1); 
        rating2 = rating2 + ratingConstant * (0 - P2); 
    } else { 
        rating1 = rating1 + ratingConstant * (0 - P1); 
        rating2 = rating2 + ratingConstant * (1 - P2); 
    } 
    
    cout << "Ratings After the game\n"; 
    cout << "Player 1 : " << rating1 << "\t Player 2 : " << rating2; 
} 

int main() { 
    float rating1 = 782, rating2 = 1432; 
    int ratingConstant = 100; 
    bool player1SuccessProb = 1; 
    cout << "Ratings before the game: \n"; 
    cout << "Player 1 : " << rating1 << "\t Player 2 : " << rating2 << endl; 
    if (player1SuccessProb) 
        cout << "Player 1 wins the game!\n"; 
    else 
        cout << "Player 2 wins the game!\n"; 
    updateRatingUsingELoRating(rating1, rating2, ratingConstant, player1SuccessProb); 
    return 0; 
}

आउटपुट:

Ratings before the game: 
Player 1 : 782      Player 2 : 1432 
Player 1 wins the game! 
Ratings After the game 
Player 1 : 784.316  Player 2 : 1429.68

  1. C++ में कंप्यूटर ग्राफिक्स में पॉइंट क्लिपिंग एल्गोरिदम C++ में कंप्यूटर ग्राफिक्स में पॉइंट क्लिपिंग एल्गोरिदम

    कंप्यूटर ग्राफिक्स कंप्यूटर स्क्रीन पर छवियों और ग्राफिक्स को बनाने से संबंधित है। यहां, हम स्क्रीन को 2-D निर्देशांक प्रणाली के रूप में मानते हैं। यह निर्देशांक प्रणाली शीर्ष-बाएं (0,0) से शुरू होती है और नीचे-दाएं पर समाप्त होती है। व्यूइंग प्लेन कंप्यूटर ग्राफिक्स में ग्राफिक्स बनाने के लिए परिभ

  1. ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम के लिए C++ प्रोग्राम ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम के लिए C++ प्रोग्राम

    पेज नंबर और पेज साइज़ दिए गए हैं; कार्य ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम का उपयोग करके मेमोरी ब्लॉक को पेज में आवंटित करते समय हिट्स और मिस की संख्या ढूंढना है। ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम क्या है? ऑप्टिमल पेज रिप्लेसमेंट एल्गोरिदम एक पेज रिप्लेसमेंट एल्गोरिदम है। एक पेज रिप्लेसमेंट एल्गोरि

  1. C++ में बेलमैन-फोर्ड एल्गोरिदम C++ में बेलमैन-फोर्ड एल्गोरिदम

    बेलमैन-फोर्ड एल्गोरिदम एक डायनामिक प्रोग्रामिंग एल्गोरिदम है जिसका उपयोग किसी भी शीर्ष के सबसे छोटे पथ को खोजने के लिए किया जाता है जिसे एक शीर्ष से प्रारंभिक शीर्ष के रूप में माना जाता है। यह एल्गोरिदम पुनरावृत्त विधि का पालन करता है और लगातार सबसे छोटा पथ खोजने का प्रयास करता है। बेलमैन-फोर्ड एल्