I would like a probability distribution d over functions R^2 → R. Think of randomly generated height-maps for a video game or something. So if we do the standard probability theory thing and let Ω be the underlying probability space, then d is a function Ω → R^2 → R. I would like:

(1) d is always smooth, i.e. d(ω) ∈ C∞(R^2 → R) function for all ω

(2) d is rotation-, translation-, mirror-invariant, i.e. for any subset S of C∞(R^2 → R), and any isometry π : R^2 → R^2 we have

μ({ω | d(ω) ∈ S}) = μ({ω | d(ω) o π ∈ S})

(where μ is the measure that lives back on Ω)

(3) d is never flat, i.e. for only perhaps a set of ω of measure zero is it the case that there exists x and y such that d(ω)(x,y) has value 0 and all (first and higher order) derivatives zero.

(4) d is efficiently computable, i.e. for all ω (except perhaps a set of measure zero) we have that the function d(ω) is a function that can be computed in a finite amount of time, assuming a reasonable set of O(1) common operations on real numbers like + - / exp log, etc., whatever. It is each particular point-sampling computation from R^2 to R that I am talking about being an efficient computation, although I guess I also tacitly assume the sampling process itself from Ω to (R^2 → R) is efficient as well.

Is there such a distribution? I could sample from a 2-D Poisson process (by using a Poisson distribution to ask how many points are in each unit-sized square in the world, and then uniformly distributing that many points within that square) to get a scattering of points in space, and then convolve this with a nice smooth C∞ bump function with compact support to satisfy (1), (2), and (4), but maybe some region might get unlucky and not have a point near enough to it, and (3) would be violated. I could use a bump function without compact support, like a Gaussian or something, and get (1), (2), and (3), but I'd have to sum over the contribution of all the infinitely many Poisson point events to get a single point sample, failing (4). I think Perlin noise is (1), (3), and (4), but I'm pretty sure it is tied to an axis-aligned grid in a way that violates (2). White noise across all space gives (2),(3),(4) without (1).