A math thing that is not particularly deep but which I happened to notice this morning (or perhaps I'm just re-remembering it having learned it long ago) is that if you're sampling a Brownian noise function f, instead of doing

(a) sample f(0)

---add to f(0) a Gaussian of variance σ

^{2}to get---> f(1)

---add to f(1) a Gaussian of variance σ

^{2}to get---> f(2)

you can equivalently do

(b) sample f(0)

---add to f(0) a Gaussian of variance 2σ

^{2}to get---> f(2)

---add to (f(0) + f(2))/2 a Gaussian of variance σ

^{2}/2 to get---> f(1)

The fact that f(2) is "twice the variance away" from f(0) is sensible; that's just how independent Gaussians add. I think it's very cute, though, that you can then turn around and interpolate f(1) by having the mean just be the average of f(0) and f(2) and with half the usual variance. I got this just by wrangling through the Bayes theorem and the definition of the Gaussians,

**but**afterwards I noticed it has a really nice geometric interpretation.

It's this: let X and Y be two IID Gaussians with variance σ

^{2}. If we apply a shear to (X, Y) to get (X, X + Y), we get the distribution of (f(1), f(2)), assuming without loss that f(0) was 0.

But the distribution of (X, Y) in

**R**

^{2}is proportional to exp(-(x

^{2}+y

^{2})/2σ

^{2}); it's rotationally symmetric. So if we look at a 45° rotation ((X+Y)/√2, (Y-X)/√2), that has exactly the same distribution. So if we do the same shear transformation to it, we get

((X+Y)/√2, (X+Y)/√2 + (Y-X)/√2)

= ((X+Y)/√2, Y√2)

which is exactly procedure (b) above! We let f(2) be Y√2, a Gaussian of variance 2σ

^{2}, and then to get f(1) we add X/√2 (a Gaussian of variance σ

^{2}/2) to half of f(2).

I think why this makes me, as a programmer (~= constructive mathematician) happy is that it tames the infinite/infinitely-small-step intuition I would otherwise have for the Weiner process. I know that I can in closed form say what it does in a big, non-infinitesimal duration (just a Gaussian), and

*then*, afterwards, interpolatively fill in the gaps as much as I computationally want to.