1. A method for generating a fingerprint for a media file, the method executed by at least one computer system and comprising: creating from the media file by the at least one computer system, a plurality of randomized versions of the media file, each randomized version of the media file altered to a random extent with respect to an attribute of the media file; generating, in a memory of the at least one computer system, a histogram from the plurality of randomized versions of the media file, the histogram having a plurality of bins each associated with a different feature of the plurality of randomized versions of the media file, and each bin storing a count of the randomized versions of the media file that have the feature associated with the bin; generating the fingerprint for the media file based on the histogram, wherein generating the fingerprint comprises: creating a number of altered versions of each bin; applying a first hash function to the number of altered versions of each bin to generate a plurality of outputs for the first hash function; determining a smallest output for the first hash function; and storing a first data element representative of the altered version that yielded the determined smallest output for the first hash function; and storing the fingerprint to a non-transitory computer-readable storage medium.