Daha yeni girişleri destekleyen bir sıralama algoritması mı arıyorsunuz?


9

Bir süredir kullanılan oylara göre girişleri sıralayacak bir sıralama sistemi üzerinde çalışıyorum. Ben bir ortalama gibi bir puan hesaplayacak bir algoritma arıyorum, ancak ben daha eski olanlar üzerinde yeni puanlar lehine istiyorum. Şunun boyunca bir şey düşünüyordum:

score1+ 2score2 + + nscoren1+2++n

Bu gibi durumlar için genellikle kullanılan başka algoritmalar olup olmadığını merak ediyordum ve eğer öyleyse lütfen bunları açıklayabilir misiniz?



2
Ağırlıklı hareketli ortalama ne olacak? en.wikipedia.org/wiki/Moving_average#Weighted_moving_average
Joe

Yanıtlar:


7

Eski girişlere daha az ağırlık veren herhangi bir işlevi kullanabilirsiniz. Örneğin, veriler puanlar, , burada indeks girişin 'varış zamanına' karşılık , yani daha yeni girişler daha büyük endekslere sahipse, artar. Böylece herhangi bir 'artan' işlev işe yarayacaktır. Örnekler:s1,,sni

  • f(x)=ex
  • f(x)=logx
  • f(x)=x
  • f(x)=x2

vb.

O zaman işleviniz

i=1nsif(i)i=1nf(i) .

Aslında, en yeni girişe en düşük endeksi vermek ve ağırlık fonksiyonunu azaltmak daha mantıklı. Bu şekilde, ilk öğeye vermek istediğiniz ağırlığı ayarlayarak ayarlayabilirsiniz.

Wikipedia'nın ağırlık işlevleri hakkında bir girişi vardır , sayfada ağırlıklandırılmış araçlar hakkında bazı örnekler bulunabilir .


Çok teşekkür ederim, aradığım şey buydu. Çok bilgilendirici
Logan Besecker

Hızlı bir sorum var, biliyorum ki ''i', 'i' ve 'f (i)' nin fonksiyonu 'i' ile ilgili ('f (x) = logx' gibi) işlevidir. Peki 'si' neyi temsil eder? yardımınız için çok teşekkürler
Logan Besecker

1
si puanlarınızdır.
Dave Clarke
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.