So I'm watching an Algorithms course in Coursera, and we are currently discussing hash tables. He's talking about the importance of a good hash function, and about how an ideal hash function would be a "super clever hash function guaranteed to spread every data set evenly".

Then he explains that the problem is that such a hash function does not exist (and that for every hash function there is a pathological data set), and that the reason for this is as follows:

fix a hash function h: U -> {0, 1, 2, ..., n-1}
=> **a la Pigeonhole Principle, there exists a bucket i such that at least |U|/n elements of U hash to i under h.**
=> if data set draws only from these, everything collides.


The bolded part is what's confusing me. Why does there exist a bucket i such that at least |U|/n elements of U hash to i under h? I can't really visualize what he means