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

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

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

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

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

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

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

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

यदि खिलाड़ी 1 गेम जीतता है, तो ट्रांसफर किए गए अंक कम होते हैं।
यदि खिलाड़ी 2 गेम जीतता है, तो ट्रांसफर किए गए अंक अधिक होते हैं।

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

प्लेयर1 के लिए,

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

प्लेयर2 के लिए,

नई रेटिंग =पुरानी रेटिंग + रेटिंग लगातार * (सफलता की समस्या - पी2)

यहां,

रेटिंग कॉन्स्टेंट एक स्थिरांक है, यह गेमिंग समुदाय द्वारा तय किया जाता है।

P1, खिलाड़ी1 के जीतने की प्रायिकता।
P2, खिलाड़ी2 के जीतने की संभावना।

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

अगर कोई खिलाड़ी जीतता है तो सक्सेसप्रोब 1 होता है नहीं तो यह 0 होता है।

ईएलओ रेटिंग एल्गोरिथम की कार्यप्रणाली को समझने के लिए एक उदाहरण लेते हैं,

इनपुट: रेटिंग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

ईएलओ रेटिंग एल्गोरिथम की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#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);
      rating1 = rating1 + 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++ में कंप्यूटर ग्राफिक्स में प्वाइंट क्लिपिंग एल्गोरिथम

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

  1. इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम के लिए C++ प्रोग्राम

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

  1. सी ++ में बेलमैन फोर्ड एल्गोरिदम?

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