2010-01-22 27 views
6

Sıralamayı hesaplamanın bir yolunu bulmaya çalışıyorum. Şu anda sadece her bir girdinin kazanım/kayıp oranını alır, yani örn. Biri 100'lük birinden 99 kez kazandı,% 99'luk bir galibiyet aldı. AMA toplamda 1 oydan 1 puan kazanırsa,% 100 kazanan bir rütbeye sahip olur, ama kesinlikle 99 kez kazanmış olandan daha yüksek olamaz. Bunu yapmanın daha iyi bir yolu ne olurdu? i doğru soruyu anlamak eğerOylama algoritması: sıralama nasıl hesaplanır?

+0

PS Aklıma gelen tek şey bir giriş (kaç kez toplam bu yarışmaya oldu) "olgunluk" dayalı rütbe düzeltmektir. onlar (onlar "olgun" ve rütbe artık ayarlanmazsa kadar) üst oy toplamaya –

cevap

5

bunu yapmak istiyorum ne kadar karmaşık bağlı Elo sistemi satranç kullandığı (veya benzeri) istediğini olabilir Örneğin, zorlu rakiplere karşı yüzlerce maçı kazanan/kaybeden birinin çok altında.

+0

Teşekkürler, mükemmel kaynak. –

0

, daha fazla oy alan sonra kim daha yüksek rütbe vardır. Bir kişinin 1/1 maçları kazandı http://en.wikipedia.org/wiki/Elo_rating_system

bile, onun değerlendirmesi olacaktır:

+0

Hayır, benim yorum görmüyorum çünkü onlar yeni olduğu için üst alma sadece rütbeleri gelen Kapak tarafında bu yaklaşım, tüm yeni girişler yasaklayan –

+0

yukarıda dball917 de puan almak için böyle bir şey kullanabilirsiniz: puan = (win/(win + kayıp)) * 100 – infinitloop

1

Hep kazanma/zarar oranı yerine bir puan sistemi kullanabilir. Kazanmak her zaman puan verir ve sonra kaybetmek için puanları kaybetmekle ya da kaybetmek için daha az puan vermekle ya kaybetmek için puanları çıkartarak oynayabilirsiniz. Her şey insanların tam olarak nasıl sıralanacağına bağlıdır. Örneğin siz naziksiniz vs 100 oyunları oynamak kişinin sizin örnekte ne konuştuklarını sesini veren (Bilmeyenler üzerinde katılmak insanları iyilik istiyorsanız kazanmak için 2 puan ve kaybeden için 1 puan vermek isteyebilirsiniz 1 oyun). NHL, sıralama için benzer bir teknik kullanır (bir kazanmada 2 puan, fazla mesai kaybı için 1 puan, normal bir kayıp için 0 puan). Bu size biraz daha esneklik sağlayabilir.

+1

Bu sayede yeni daha iyi girişler, puanları kullanırsak eskilerle yetişemeyecektir. Kazanç/kayıp oranı daha yüksek olsa bile her zaman bir gecikme olurlar. –

+0

Evet, söylediğim gibi yapmak istediğin şeye bağlı. Gönderi, daha fazla oyun oynayarak insanları tercih etmek istediğini gösterdi. – dball917

0

o girdiyi kaybetme eğer girişini kazanan daha rütbe eklemek için anlamlı olacak aslen çok daha yüksek bir rütbe vardı, mesela çok daha güçlü bir rakip mi? Böyle

6

deneyin şey:

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

Bu şekilde,% 50 olan kazanır şey, ama bir milyon oy hala önde% 100 kazanır şey ama sadece bir oy olacaktır.

Ardından Bu hak, ilk sayfanın en üstünde yepyeni girdileri koyacağız

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

gibi bir şey de (bu örnekte gün) yaşına göre fazladan ağırlık ekleyebilir ve

sonraki 5 gün boyunca listeden yavaşça aşağıya doğru hareket edecekler (yaşı bir tam sayı değil, kesirli bir sayı olduğunu varsayalım). 5 gün geçtikten sonra, listede sadece bir önceki sözde koddan gelen skora dayanarak listelenecekler.

+1

Bence sen bana puan = oy * (kazanır/kayıp) – assaqqaf

İlgili konular