#!/usr/bin/python from __future__ import division def bloom(bits, hashes, keys): one_bit_fullness = 1/bits all_hashes_emptiness = (1-one_bit_fullness)**hashes all_keys_emptiness = all_hashes_emptiness**keys all_keys_fullness = 1 - all_keys_emptiness false_positive_probability = all_keys_fullness**hashes return {"keys": keys, "hashes": hashes, "bits": bits, "all_keys_fullness": all_keys_fullness, "false_positive_probability": false_positive_probability, } if __name__ == '__main__': for hashes in 1, 3: for keys in 1, 32, 128, 256: print(('%(keys)d keys indexed with %(hashes)d hashes' + ' in %(bits)d bits: fullness %(all_keys_fullness)f,' + ' false positives %(false_positive_probability)f') % bloom(256, hashes, keys))