2011-04-10 21 views
6

मुझे PHPClasses वेबसाइट से निम्नलिखित ईएलओ कक्षा मिली है।PHP फेसमैश ईएलओ रेटिंग कक्षा/फंक्शन

<?php 
class elo_calculator { 
    public function rating($S1, $S2, $R1, $R2) { 
     if(empty($S1) or empty($S2) or empty($R1) or empty($R2)) 
      return null; 
     if($S1 != $S2) { 
      if($S1 > $S2) { 
       $E = 120 - round(1/(1 + pow(10, (($R2 - $R1)/400))) * 120); 
       $R['R3'] = $R1 + $E; 
       $R['R4'] = $R2 - $E; 
      } else { 
       $E = 120 - round(1/(1 + pow(10, (($R1 - $R2)/400))) * 120); 
       $R['R3'] = $R1 - $E; 
       $R['R4'] = $R2 + $E; 
      } 
     } else { 
      if($R1 == $R2) { 
       $R['R3'] = $R1; 
       $R['R4'] = $R2; 
      } else { 
       if($R1 > $R2) { 
        $E = (120 - round(1/(1 + pow(10, (($R1 - $R2)/400))) * 120)) - (120 - round(1/(1 + pow(10, (($R2 - $R1)/400))) * 120)); 
        $R['R3'] = $R1 - $E; 
        $R['R4'] = $R2 + $E; 
       } else { 
        $E = (120 - round(1/(1 + pow(10, (($R2 - $R1)/400))) * 120)) - (120 - round(1/(1 + pow(10, (($R1 - $R2)/400))) * 120)); 
        $R['R3'] = $R1 + $E; 
        $R['R4'] = $R2 - $E; 
       } 
      } 
     } 
     $R['S1'] = $S1; 
     $R['S2'] = $S2; 
     $R['R1'] = $R1; 
     $R['R2'] = $R2; 
     $R['P1'] = ((($R['R3'] - $R['R1']) > 0)?"+" . ($R['R3'] - $R['R1']) : ($R['R3'] - $R['R1'])); 
     $R['P2'] = ((($R['R4'] - $R['R2']) > 0)?"+" . ($R['R4'] - $R['R2']) : ($R['R4'] - $R['R2'])); 
     return $R; 
    } 
} 
?> 

मैं अपने भोजन रेटिंग साइट को यह लागू करने के लिए कोशिश कर रहा हूँ।

यहाँ मैं क्या समझ

  1. प्रणाली हम सभी व्यंजनों के लिए एक आधार स्कोर सौंपने होंगे साथ शुरू करने के लिए है।
  2. हमारे पास 4 चर एस 1, एस 2, आर 1, आर 2 (एस = स्कोर, आर = रैंक)
  3. दो डिश के बीच रेटिंग करते हैं जब मैं पहली पकवान दबाता हूं। एस 1 और एस 2 क्या होगा? क्या यह 1-0 होगी?
  4. क्या होगा अगर मैं 10k लड़ाइयों के बाद एक और पकवान जोड़ूं? चूंकि मैं इसके लिए आधार स्कोर आवंटित करूँगा, यह बेहतर होगा?
  5. मैं कैसे एक डिश के स्कोर नहीं जाना नीचे 0.

यहाँ उसी के पीएचपी कार्यान्वयन है रोक सकता है। क्या आप मुझे 4 चर समझने में मदद कर सकते हैं और मुझे इसका उपयोग कैसे करना चाहिए?

+1

मैं एलो रेटिंग काफी उपयोगी पीछे गणितीय सिद्धांत पाया। इसे सीधे लागू करना आसान है http://en.wikipedia.org/wiki/Elo_rating#Theory – LumpN

+1

इस प्रश्न को जांचें: http://stackoverflow.com/questions/3848004/facemash-algorithm – tradyblix

+0

@LumpN मैंने इसे चेक आउट किया । उपयोग में चर के बारे में थोड़ा उलझन में हैं और उनका क्या मतलब है। मेरी पोस्ट अपडेट करेगा। Plz एक नज़र है। @tradyblix आपको धन्यवाद। इसे थोड़ा सा परेशानी होने के बाद इसे लागू करें। मेरी पोस्ट –

उत्तर

5

GitHub पर यहाँ सबसे अच्छा php वर्ग है ELO रेटिंग प्रणाली के लिए मैं कभी मिला है: https://github.com/Chovanec/elo-rating

उपयोग:

// player A elo = 1000 
// player B elo = 2000 
// player A lost 
// player B win 
$raging = new Rating(1000, 2000, 0, 1); 

// player A elo = 1000 
// player B elo = 2000 
// player A draw 
// player B draw 
$raging = new Rating(1000, 2000, .5, .5); 
1

1.S1 पहले पकवान के वर्तमान स्कोर और एस 2 दूसरा पकवान आप

2.R1 साथ तुलना कर रहे हैं के लिए किया जाना चाहिए वर्तमान पकवान के पद है और R2 दूसरे पकवान की वर्तमान पद है

अपनी उचित नहीं इस प्रणाली 2. यदि शायद स्कोर बचाने के लिए एक डेटाबेस का उपयोग करने जा रहे हैं वैश्विक खेल

3.you में इस्तेमाल नहीं किया जाएगा, ताकि देता है कहते हैं कि यह इस

if($elo_calcualtor->rating(1,2,1,2)['p1'] < 0){$current_dish_score = 0;} 
की तरह होना चाहिए

अंत में आप दस से रेटिंग शुरू होता है बनाना चाहिए, तो यह 0 नीचे नहीं जाना होगा और सबसे अधिक संभावना नहीं जाना होगा से अधिक 20

आशा है कि यह मदद करता है