Я бы пошел с функцией, которая уменьшает «эффективную карму» каждого предмета по истечении заданного количества времени. Это немного похоже на метод Эрика.
Определите, как часто вы хотите уменьшить «эффективную карму». Затем умножьте карму на коэффициент масштабирования, основанный на этом периоде.
effective karma = karma * (1 - percentage_decrease)
, где percentage_decrease
определяется вашей функцией. Например, вы могли бы сделать
percentage_decrease = min(1, number_of_hours_since_posting / 24)
чтобы сделать так, что эффективная карма каждого предмета уменьшается до 0 в течение 24 часов. Затем используйте эффективную карму, чтобы определить, какие изображения показывать. Это немного более стабильное решение, чем просто вычитание времени с момента публикации, поскольку оно масштабирует карму между 0 и ее фактическим значением. Минимальное значение - поддерживать масштабирование на нижней границе 0, так как раз в день вы будете получать значения больше 1.
Однако это не учитывает популярность в строгом смысле. Ответ Тима дает некоторые идеи о том, как принять во внимание строгую популярность (то есть просмотры страниц).