#!/usr/bin/env python3

import random
import sys

def main():
    if len(sys.argv) != 3:
        print(f"Usage:\n\t{sys.argv[0]} num_keys num_buckets")
        print(f"E.g.,\n\t{sys.argv[0]} 2500 1000000")
        quit()
        
    num_keys = int(sys.argv[1])
    num_buckets = int(sys.argv[2])
    tests_per_run = 100


    print(f"Number of random keys: {num_keys}")
    print(f"Number of buckets: {num_buckets}")

    print(f"Each run tests {tests_per_run} experiments")

    while 1:
        collisionCount = 0
        for test in range(tests_per_run):
            bucketChoices = set() 
            for i in range(num_keys):
                r = random.randint(0, num_buckets - 1)
                if r in bucketChoices:
                    collisionCount += 1
                    break
                else:
                    bucketChoices.add(r)
            if test % 10 == 0:
                print(f"{test}...", end='')
        print(f": {collisionCount}% likelihood of a collision")

if __name__ == "__main__":
    main()
