import numpy as np from scipy.stats import hypergeom # chance for 3 or more successes, pop: 99, succ in pop: 35, succ in samp: 7 format(1 - hypergeom.cdf(2, 99, 35, 7), ".1%") # 47.7% # chance for k or more successes, pop: M, succ in pop: n, succ in samp: N def hyp(k, M, n, N): return 1 - hypergeom.cdf(k-1, M, n, N) hyp(3, 99, 35, 7) # range succ in pop 35 to 40 [[n, hyp(3, 99, n, 7)] for n in range(35, 40)]