Skip to content

Instantly share code, notes, and snippets.

@colmmacc
Created January 2, 2018 21:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save colmmacc/a12c9f55e52adc11f8f6056c1d3877e9 to your computer and use it in GitHub Desktop.
Save colmmacc/a12c9f55e52adc11f8f6056c1d3877e9 to your computer and use it in GitHub Desktop.
import sys
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
def choose(n, m):
return factorial(n) / (factorial(m) * factorial(n - m))
def overlap(n, m, o):
return (choose(m, o) * choose(n - m, m - o)) / choose(n, m)
def usage():
print "shard.py n m"
print
print " n: The total number of elements"
print " m: The number of elements per shard"
print
if __name__ == "__main__":
if len(sys.argv) != 3:
usage()
try:
n = int(sys.argv[1])
m = int(sys.argv[2])
except:
usage()
if m > n:
usage()
print "n = ", n
print "m = ", m
print
for i in range(0, m + 1):
print 'overlap: %-4d %0.20f' % (i, overlap(float(n), float(m), float(i)) * 100)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment