[ create a new paste ] login | about

Link: http://codepad.org/gSdrUhZ2    [ raw code | output | fork ]

PHP, pasted on May 15:
<?php
// these values came from DB
$total_votes     = 2936;    // total of votes for all items
$total_rating    = 582.955; // sum of all ratings
$total_items     = 202;

// now the specific item, it has no votes yet
$this_num_votes  = 0;
$this_score      = 0;
$this_rating     = 0;

// simulating a lot of votes with 1 star
for ($i=0; $i < 100000; $i++) { 
    $rating_sent = 2; 

    $total_votes++; // adding 1 to total
    $total_rating = $total_rating+$rating_sent; 

    $avg_num_votes = ($total_votes/$total_items); // Average number of votes in all items
    $avg_rating = ($total_rating/$total_votes);   // Average rating for all items

    $this_num_votes = $this_num_votes+1;          // Number of votes for this item
    $this_score = $this_score+$rating_sent;       // Sum of all votes for this item
    $this_rating = $this_score/$this_num_votes;   // Rating for this item

    $bayesian_rating = ( ($avg_num_votes * $avg_rating) + ($this_num_votes * $this_rating) ) / ($avg_num_votes + $this_num_votes);
}

echo $avg_rating;
echo "\n";
echo $this_rating;
echo "\n";
echo $bayesian_rating;
?>


Output:
1
2
3
1.9486181219398
2
1.9997394935885


Create a new paste based on this one


Comments: