It may seem like a score should be a straight forward affair with all the votes tallied and divided by their count to arrive at the score. Unfortunately, that would only work for a small number of stories and a small number of voters for a short period of time. After that, many elements start affecting how scoring happens.
Not all readers vote. So voters are self selective and not necessarily a real representation of the general readership.
People are nice in general (unless they have an agenda). They don’t like to punish or discourage. The general tendency is to only vote when they like a story.
People are lazy: Readers don’t vote on stories they don’t finish. To finish a story, they have to like it. So the general tendency is to get votes from those who liked the story in general.
People are easily influenced:
If most scores are higher than 8, then voting less than 8 becomes psychologically impossible for most people. How can you give a story a vote lower than the average when it’s fairly readable?
For all the above reasons, a simple, average-the-votes-and-display-the-results-as-a-score voting system doesn't work.
We needed something more sophisticated: A voting system that weighs raw scores and makes them into something more logical.
The system calculates a story's raw average vote after dropping the top 5% and the bottom 5% of the votes to eliminate outliers.
The system knows all the stories raw scores and knows the median of these raw scores.
The score weighing formula figures where the story's raw score sits between this median and the extremes of 1 and 10. Then it calculates the same relative location for a median of 6.00. So if a story's raw score is equal to the raw scores median, it will end up with a score of 6. if it has a perfect 10 score, it remains at 10. If it has a raw score of 1, then it stays at 1. Stories with raw scores closest to the raw median are moved the most on the scale. Stories closer to the extremes are moved less. The raw scores median is calculated twice per day.
The weighed score gets used as the story's score for display on the site.
This weighing algorithm preserves the relative order of the stories. So if you sort the stories by raw score and by weighed score, you'll get the exact same line up of stories.
To put it simply, the score weighing algorithm shifts scores to create an artificial median of 6.00.