2010-01-22 18 views
6

मैं रैंक की गणना करने के लिए अपना एक तरीका समझने की कोशिश कर रहा हूं। अभी यह प्रत्येक व्यक्तिगत प्रविष्टि के जीत/नुकसान का अनुपात लेता है, इसलिए उदा। एक ने 100 में से 99 बार जीता, इसमें 99% जीतने वाला रैंक है। लेकिन यदि एक प्रविष्टि कुल 1 वोटों में से 1 जीती है, तो इसमें 100% जीतने वाला रैंक होगा, लेकिन निश्चित रूप से यह 99 गुना जीतने वाले व्यक्ति की तुलना में अधिक नहीं हो सकता है। ऐसा करने का एक बेहतर तरीका क्या होगा?वोटिंग एल्गोरिदम: रैंक की गणना कैसे करें?

+0

पीएस एकमात्र चीज जो मैं सोच सकता हूं वह एक प्रविष्टि की "परिपक्वता" (प्रतियोगिता में कितनी बार थी) के आधार पर रैंक को सही करना है। फ्लिप पक्ष पर यह दृष्टिकोण सभी नई प्रविष्टियों को केवल शीर्ष रैंक प्राप्त करने से प्रतिबंधित कर देगा क्योंकि वे नए नहीं हैं क्योंकि उन्हें शीर्ष वोट नहीं मिलते हैं (जब तक वे "परिपक्व" नहीं होते हैं और रैंक को और समायोजित नहीं किया जाता है) –

उत्तर

5

कैसे जटिल आप इसे बनाना चाहते के आधार पर, एलो प्रणाली शतरंज उपयोग करता है (या कुछ इसी तरह) हो सकता है कि आप क्या चाहते: http://en.wikipedia.org/wiki/Elo_rating_system

यहां तक ​​कि अगर एक व्यक्ति 1/1 मैच जीते है, उनकी रेटिंग होगा उदाहरण के लिए, कठिन विरोधियों के खिलाफ सैकड़ों मैचों को जीतने/खोने वाले किसी व्यक्ति से बहुत दूर।

+0

धन्यवाद, उत्कृष्ट संसाधन। –

0

यदि मैं सही प्रश्न को समझता हूं, तो जो भी अधिक वोट प्राप्त करता है वह उच्च रैंक होता है।

+0

नहीं, मेरी टिप्पणी देखें –

+0

से ऊपर dball917 आप स्कोर%: स्कोर = (जीत/(जीत + खो गया)) प्राप्त करने के लिए इस तरह कुछ भी उपयोग कर सकते हैं * 100 – infinitloop

1

आप हमेशा जीत/हानि अनुपात के बजाय एक बिंदु प्रणाली का उपयोग कर सकते हैं। जीतना हमेशा अंक देगा और फिर आप हारने के लिए अंक हटाने, खोने के लिए सभी अंक देने या हारने के लिए कम अंक देने के साथ खेल सकते हैं। यह सब इस बात पर निर्भर करता है कि आप लोगों को कैसे रैंक करना चाहते हैं। उदाहरण के लिए आप जीतने के लिए 2 अंक देना चाहते हैं और हारने के लिए 1 अंक देना चाहते हैं, यदि आप उन लोगों पर पक्षपात करना चाहते हैं जो उन लोगों पर भाग लेना चाहते हैं जो नहीं करते हैं (जो कि आप 100 गेम बनाम व्यक्ति के उदाहरण के बारे में बात कर रहे थे 1 खेल)। एनएचएल रैंकिंग के लिए एक समान तकनीक का उपयोग करता है (जीत के लिए 2 अंक, ओवरटाइम हानि के लिए 1 बिंदु, नियमित नुकसान के लिए 0 अंक)। इससे आपको कुछ और लचीलापन मिल सकता है।

+1

यदि हम अंक का उपयोग करते हैं तो इस तरह नई बेहतर प्रविष्टियां पुराने लोगों के साथ पकड़ने में सक्षम नहीं रहेंगी। उनके जीत/हानि अनुपात अधिक होने पर भी वे हमेशा एक अंतराल होगा। –

+0

हाँ, जैसा कि मैंने कहा था कि यह उस पर निर्भर करता है कि आप क्या करना चाहते हैं। पद यह इंगित करता था कि वह खेले जाने वाले अधिक खेलों वाले लोगों का पक्ष लेना चाहता था। – dball917

0

अगर प्रवेश खोने पर मूल रूप से बहुत अधिक रैंक था, तो जीतने के लिए अधिक रैंक जोड़ने का अर्थ होगा, उदाहरण के लिए बहुत मजबूत प्रतियोगी? इस तरह

6

कोशिश कुछ:

votes = wins + losses 
score = votes * (wins/votes) 

इस तरह से, 50% जीत के साथ कुछ है, लेकिन एक लाख वोट अभी भी 100% जीत के साथ कुछ है, लेकिन केवल एक वोट से आगे होगा।

तुम कुछ

if age < 5: 
    score = score + ((highest real score on site) * ((5 - age)/5) 

की तरह यह सही पहली पेज के शीर्ष पर ब्रांड नए प्रविष्टियों डाल देंगे भी एक अतिरिक्त वजन (इस उदाहरण में दिनों में) उम्र के आधार पर में जोड़ सकते हैं,,, और उसके बाद वे अगले 5 दिनों के दौरान सूची में धीरे-धीरे नीचे चले जाएंगे (मुझे लगता है कि आयु एक आंशिक संख्या है, केवल एक पूर्णांक नहीं)। 5 दिनों के बाद, उन्हें पूरी तरह से छद्म कोड के पिछले बिट के स्कोर पर आधारित सूची में रखा जाएगा।

+1

मुझे लगता है कि आप मुझे स्कोर = वोट * (जीत/नुकसान) – assaqqaf

संबंधित मुद्दे