From this stackoverflow post
The main trick behind this algorithm is that if you, observing a stream of random integers, see an integer which binary representation starts with some known prefix, there is a higher chance that the cardinality of the stream is 2^(size of the prefix).
Hyperloglog uses hash to achieve randomness, but how does one prove that hashing a value give random output? Or even more strictly does hash guarantees pseudo random like uniform output?
If hash does not guarantee uniform output, is there a way we can upperbound and quantize the non-uniformity of a hash function?