I also took a close look at hash function behavior, specially the effect of the hash[23-31]:index[0-3] combiner to produce the hashmap hash, and use of hash[21-22] for the filter. These are both at least Poisson (the former is slightly better due to index or sequentiality), because of the nature of sha256. So this makes it easy to model the math. I also took the actual hash function distribution to verify its uniformity. It’s essential that the hashmap function and the filter hash function are independence, and these are perfectly so.