Standard Normal Deviates

According to the Wikipedia article, another way to obtain z_0 and z_1 is with trig:

  • z_0 = R cos(θ)
  • z_1 = R sin(θ)

The trig functions will give negative values over half of their domains.

I won't hazard to pronounce the derivation from the so-called Basic Form (trig) to the Polar Form implemented in the BMT block. The advantage of the latter is that it avoids calling the trig functions in a language's floating point package. That difference maybe used to afford a real speed advantage. It's the form I've always used for simulations.

Here's a link to the article (or you can find the same in Knuth.)

https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform