import random, hashlib, collections def duplicates(table): return [key for key, values in table.items() if len(values) > 1] def hash(msg): # we use only the first 3 bytes, as a toy example return hashlib.md5(str(msg).encode('utf-8')).digest()[:3] lookup = collections.defaultdict(list) # lookup table while duplicates(lookup) == []: # as long as there are no duplicates input = random.getrandbits(64) # 64 bits is sufficient to assume no input occurs twice lookup[hash(input)].append(input) print(len(lookup))