The answer is no, that it is actually impossible to construct one.
This function must be deterministic, so it produces the same output for the same input.
We want it to produce uniform distribution
so that means it needs to add randomness
to what comes in, but that's impossible.
Since it's deterministic, the only randomness it could use is what's provided by x.
So there's no way to amplify that to provide more randomness in the output.
So, this is actually impossible.
We're going to assume they exist anyway.
And the assumption is that, even though it's impossible
in theory to do this, in practice we can build hash functions
that provide mappings that are computationally
very difficult and indistinguishable from uniform
by an adversary with a reasonable amount
of computational resources.
