как рассчитать средний рейтинг - PullRequest
0 голосов
/ 12 июля 2011

Извините, если мне не ясно:

Как бы я рассчитал средний рейтинг на основе MinRate и MaxRate

, например: minRate = 0 или 1 и MaxRate = 2 или 3 или 4 или 5 или 0

Как мне рассчитать рейтинг?

Конец обновления

Я внедряю систему 5-звездочного рейтинга, и моя структура таблицы имеет два столбца: 1) MinRate 2) MaxRate

, поэтому мой вопрос: как рассчитать средний рейтинг?

вот как яиметь в моей реализации 5-звездочный рейтинг.

int[] {7, 0, 0, 8, 5}; 

Это означает, что:

  • 7 пользователей оценили статью с 1
  • 0 пользователи оценили статью сa 2
  • 0 пользователи оценили статью с 3
  • 8 пользователи оценили статью с 4
  • 5 пользователи оценили статью с 5

Ответы [ 5 ]

3 голосов
/ 12 июля 2011
int[] x =  {7, 0, 0, 8, 5}; 
/* 
    7 x 1 star
    0 x 2 stars
    0 x 3 stars
    8 x 4 stars
    5 x 5 stars
*/

float totalVoters = 0;
float totalPoints = 0;

for(i = 1; i <= x.length; i++)
{
    //add 7, 0, 0, 8, 5
    totalVoters += x[i];

    /* add
        7 x 1 star = 7,
        0 x 2 stars = 0,
        0 x 3 stars = 0,
        8 x 4 stars = 32,
        5 x 5 stars = 25
    */
    totalPoints += x[i] * i;
}

response.write(totalPoints/totalVoters); //get the average
1 голос
/ 12 июля 2011

Я действительно не знаю ASP.NET, но среднее значение - это просто сумма, деленная на количество элементов:

(int[0] + int[1] * 2 + int[2] * 3 + int[3] * 4 + int[4] * 5) / 5

Итак, в цикле (не будет работать, поскольку int зарезервировано, но вы поняли):

float average = 0;

for (int i = minrate; i < maxrate; i++) {
  average += int[i] * i;
}

average /= maxrate;
0 голосов
/ 13 октября 2018

Это то, что я сделал

   private static double GetRating()
        {
            int star5 = 12801;
            int star4 = 4982;
            int star3 = 1251;
            int star2 = 429;
            int star1 = 1265;

            double rating = (double)(5 * star5 + 4 * star4 + 3 * star3 + 2 * star2 + 1 * star1) / (star1 + star2 + star3 + star4 + star5);

            rating = Math.Round(rating, 1);

            return rating;
        }

        static void Main(string[] args)
        {
            double rating = GetRating();
            Console.WriteLine("Your product rating: " + rating);
            Console.ReadKey();
        }
0 голосов
/ 12 июля 2011

Вот некоторый псевдокод:

<code>
double avg = 0;
for (int i = 0; i < arr.Length; i++) // arr.Length should be the same as MaxRate
{
    avg += arr[i] * (i + MinRate);
}
avg /= arr.length;
0 голосов
/ 12 июля 2011
((7*1)+(8*4)+(5*5))/(7+8+5) = 3.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...