Skip to content

Instantly share code, notes, and snippets.

@ntulip
Created February 21, 2011 15:08
Show Gist options
  • Save ntulip/837176 to your computer and use it in GitHub Desktop.
Save ntulip/837176 to your computer and use it in GitHub Desktop.
Reddit's comment ranking
# http://amix.dk/blog/post/19588?source=google
from math import sqrt
def _confidence(ups, downs):
n = ups + downs
if n == 0:
return 0
z = 1.0 #1.0 = 85%, 1.6 = 95%
phat = float(ups) / n
return sqrt(phat+z*z/(2*n)-z*((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
def confidence(ups, downs):
if ups + downs == 0:
return 0
else:
return _confidence(ups, downs)
@gnprice
Copy link

gnprice commented Jun 1, 2011

OK, here's the actual Reddit comment ranking, according to their own open-sourced code:
https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_sorts.pyx#L40

It puts the sqrt() in the place I described, and then their z-value turns out to be this:

 z = 1.281551565545 # 80% confidence

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment