[SciPy-dev] Box-Muller considered slow.

David M. Cooke cookedm at physics.mcmaster.ca
Thu Dec 8 17:25:39 EST 2005


Charles R Harris <charlesr.harris at gmail.com> writes:

> I have done some benchmarking of the ziggurat algorithm vs the Box-Muller
> algorithm in boost/random for computing gaussian random variables. The ziggurat
> method was 6x faster. As scipy at this time uses the Box-Muller method, I would
> like to propose a switch to the ziggurat method.

boost/random looks like it uses a deterministic polar method for
gaussian RVs (at least in 1.33).

I've had a look at the ziggurat algorithm; it's more complicated, so
we'd need some code for it (hint, hint :-)

Mind you, that code could be written in Pyrex, not C, as the mtrand
module is written as a Pyrex wrapper around C code.

For those interested, Marsgalia and Wai Wan Tang's updated method
(2000) is here,
http://www.jstatsoft.org/v05/i08/ziggurat.pdf

with some comments about a problem using the single random number for
rejection in it here:
http://www.doornik.com/research/ziggurat.pdf

-- 
|>|\/|<
/--------------------------------------------------------------------------\
|David M. Cooke                      http://arbutus.physics.mcmaster.ca/dmc/
|cookedm at physics.mcmaster.ca




More information about the SciPy-Dev mailing list