Рейтинг из десяти между положительными и отрицательными голосами

Последние несколько часов я ломал голову над тем, как получить рейтинг от 0 до 10, см. picture, используя два значения. Положительные и отрицательные голоса. Я уже могу получить голоса из базы данных, и в качестве примера я хотел бы использовать следующее:

    Xn = Negative
    Xp = Positive

    50n / 100p
    24n / 12p
    32n / 0p (Would be 0)

     3n / 0p
     2n / 1p
     1n / 2p
     0n / 3p

Обычно я довольно быстро решаю такие проблемы. Но из-за моей большой загруженности я не могу этого понять.

Обычно я бы не стал просить о такой безумной помощи, но из-за отсутствия каких-либо приличных математических навыков я обращаюсь к вам, ребята, за помощью.

ПРИМЕЧАНИЕ. Рейтинги на картинке определяются в массиве PHP. В буквальном смысле рейтинги, которые вы видите. $ratings = array(5.4,10,7.4,8.3)


person LeoV117    schedule 14.04.2014    source источник
comment
Каков ожидаемый результат для ваших трех проиллюстрированных случаев (последний равен нулю)?   -  person Robert Harvey    schedule 15.04.2014
comment
Я предполагаю следующее: 1: 5.0 | 2: 2.5 | 3: 0 как я уже сказал, приведенная выше информация была просто примером. Соответственно значения positive и negative будут разными.   -  person LeoV117    schedule 15.04.2014
comment
Я добавил несколько дополнительных случаев. Не подскажете, какие будут баллы за них?   -  person Robert Harvey    schedule 15.04.2014
comment
Кроме того, хотя ответ Популуса не дает вам желаемых баллов, он действительно дает вам рейтинг, линейный по всему диапазону от 0 до 10. Я бы подумал, что 50/50 будет дало бы вам 5 баллов, а 24n/12p дало бы вам 3,33 балла.   -  person Robert Harvey    schedule 15.04.2014


Ответы (1)


Rating = (Positive / Total Votes) * 10

Не знаю, как это может быть проще...

$uvote = 10;
$dvote = 15;
$rating = 0 ? 0 : ($uvote / ($uvote + $dvote)) * 10; // 4
person Populus    schedule 14.04.2014
comment
Это не даст вам 5 для первого случая. Это не даст вам 2,5 для второго случая. - person Robert Harvey; 15.04.2014
comment
он не уточнил, что будет 5, он сказал I assume... - person Populus; 15.04.2014
comment
так как он понятия не имеет, что делать, поэтому я даю ему самое простое решение его проблемы: как получить рейтинг от 0 до 10 с плюсами и минусами - person Populus; 15.04.2014
comment
Я благодарю вас за это, но тогда возникает проблема, когда есть 0 положительных голосов и, скажем, 1 отрицательный голос. Видите, он пытается делить на ноль. Чего по законам мироздания делать нельзя. - person LeoV117; 15.04.2014
comment
если есть 1 отрицательный голос и 0 положительных: (0 / 1) * 10 = 0. Случай, о котором вам нужно беспокоиться, это 0/0, который, как я полагаю, PHP все равно оценивает как 0 по умолчанию. - person Populus; 15.04.2014
comment
Я полагаю, что мог бы автоматически голосовать за сообщение всякий раз, когда загрузчик публикует его. Таким образом, человек, опубликовавший это сообщение, автоматически получает положительный голос. - person LeoV117; 15.04.2014
comment
как бы то ни было, я думаю, что это то, что делает Reddit — ваши собственные материалы автоматически получают от вас один голос. - person matt lohkamp; 15.04.2014