Welcome to the Monastery  
PerlMonks 
Re^2: The statistics of hashing. (**4)by tye (Sage) 
on Apr 01, 2012 at 07:54 UTC ( #962861=note: print w/replies, xml )  Need Help?? 
Wikipedia is correct (well, agrees quite closely with some of my calculations). But you have extrapolated from that quite incorrectly. 0.75**4 is the odds of, after inserting 1.1e5 strings, that there has been at least one collision in each of the four hashes. It is not even close to the odds of there being a single string that produced a simultaneous collision in all 4 hashes. Those odds would be more like 0.75*(0.75/1.1e5)**3 or about 2e16. My calculations came up with an upper bound of 9.5e15. I believe the 9.5e15 number is much, much more accurate. It only discounts the possibility of there being fewer than 1.1e5 bits set. I suspect the ratio of "expected bits set"/1.1e5 to be very close to 1. While the 2e16 number is based on there being a 75% chance of exactly one collision. But there is a 25% chance of 0 collisions and a 75% chance of 1 or more collisions. And the possibility of 2 collisions approximately doubles the odds for some subset of the possible outcomes and so has a much bigger impact on the final total than does the possibility of there being 1.1e51 bits set instead of 1.1e5. For example, consider tossing a coin twice. There is a 75% chance of getting at least one "head". Do 4 such trials. For each head, assign it a random position in 1.1e5 slots (but only one head per slot per trial). The odds of the 4 trials producing 4 heads in one of those slots (one from each trial) one might estimate as:
Where x==1.1e5. Or, 2.3e16. But to find the accurate odds you have to realize that there is a 50% chance of one "head" (per trial) and a 25% change two "heads" (per trial). So the actual odds are found via:
Where x1==1.1e51 and x12==1/(1.1e51)+1/(1.1e52). That raises the odds by a factor of 2.37 to 5.6e16. That type of magnification of the odds will be much more pronounced in the case originally discussed and I bet would result in nearly the 48fold increase required to get to the odds of my upper bound calculation.  tye
In Section
Seekers of Perl Wisdom

