Самая близкая вещь, которую я нашел как "решение" этого, при помощи JRuby и затем использования Проект Летающей тарелки. Я просто желаю, чтобы это портировать к Ruby, таким образом, это могло быть встроенное решение. Бог мне жаль, что я не был лучше в Java.
вот еще один, статистически верный способ: http://www.thebroth.com/blog/118/bayesian-rating
Вопрос в том, насколько выше должен быть рейтинг 4.6 / 20, чем 5.0 / 2 ...
Идея не принимать во внимание пункты, которые не имеют по крайней мере x голосов.
Еще одна идея - набить «средними» голосами. Решите, что минимум 10 голосов. 5.0 / 2 должно быть заполнено 8 виртуальными голосами по 2.5
5.0 / 2 означает 2 голоса с 5.0, прибавив 8 к 2.5, вы получите 30/10 -> 3.0;)
Теперь вам нужно решить сколько голосов должен иметь хотя бы пункт. Для тех, кто уже набрал минимальное количество голосов, должно быть выполнено прямое сравнение.
4.5/20 > 4.4/100
5.0/2 < 3.1/20 (as 5.0/2 is, as we calculated, 3.0/10)
Как насчет того, чтобы дать каждому 10 голосам вес 1, чтобы 20 голосов дали вес элементу 2. Тогда, если элемент имеет нулевой вес, он потеряет 0,5 от среднего
4.6/20 = 20/10: 2 weight
5.0/2 = 2/10: 0 weight
(4.6 * 0.02) + 4.6 = 4.692
(5.0 * 0.00) + 5.0 = 5 - 0.5 = 4.5
2.5/100 = 100/10: 10 weight
4.5/2 = 2/10: 0 weight
(2.5 * 0.1) + 2.5 = 2.75
(4.5 * 0.0) + 4.5 = 4.5 - 0.5 = 4