DEV Community

Cover image for Rating Algorithm + Example written in JS, PHP, and Go
Brama Udi
Brama Udi

Posted on • Edited on

Rating Algorithm + Example written in JS, PHP, and Go

As we know Rating are used to make a feedback between developer and user or something similar, i thinks that was the best way to ask people about how the feel do you experience when using the product, it's simple and easy to understand for both devs & user.

Math

The logic behind rating system is quite simple as this:

rating = quantity / sum total
Enter fullscreen mode Exit fullscreen mode

For more explanation i have create some condition to simulate the rating usage in real life;

Example: There is a guy who sell a fried rice, he want to ask his customer about the food taste, he take a survey for 10 of his customer to rate between 1 to 5 point.

Then the result is:

4 3 3 4 2 5 2 3 5 1 
Enter fullscreen mode Exit fullscreen mode

Then we can get the rating result by counting like this;

A = 4 + 3 + 3 + 4 + 2 + 5 + 2 + 3 + 5 + 1
B = 10
rating = A / B
Enter fullscreen mode Exit fullscreen mode

Explain: A is addition of each rate quantity, so in this case A will have value 32 while B is a rate quantity itself then the value is 10, and rating value are the result of divided value of A and B which is give a result 3.2.

Just Show Me The Code

Ok, don't waste your time by reading my ~shit~ explanation while you're getting more understand with just reading the code. :)

JavaScript:

const rates = [4, 3, 3, 4, 2, 5, 2, 3, 5, 1]

let total = 0
rates.forEach(data => {
  total += data
})

const qty = rates.length
const rating = total / qty

console.log("Rating Result:", rating) // Rating Result: 3.2
Enter fullscreen mode Exit fullscreen mode

PHP:

$rates = array(4, 3, 3, 4, 2, 5, 2, 3, 5, 1);

$total = 0;
foreach ($rates as $data) {
  $total += $data;
}

$qty = count($rates);
$rating = $total / $qty;

echo 'Rating Result: ' . $rating; // Rating Result: 3.2
Enter fullscreen mode Exit fullscreen mode

Go:

package main

import "fmt"

var rates = []int{4, 3, 3, 4, 2, 5, 2, 3, 5, 1}

func main() {

    var total int = 0
    for _, data := range rates {
        total += data
    }

    var qty int = len(rates)

    // The function float64() is needed
    // to convert decimal number of result 
    var rating float64 = float64(total) / float64(qty)

    fmt.Printf("Rating Result: %.1f\n", rating) // Rating Result: 3.2
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)