Ziggurat-based hardware gaussian random number generator

Abstract
An architecture and implementation of a high performance Gaussian random number generator (GRNG) is described. The GRNG uses the Ziggurat algorithm which divides the area under the probability density function into three re- gions (rectangular, wedge and tail). The rejection method is then used and this amounts to determining whether a ran- dom point falls into one of the three regions. The vast major- ity of points lie in the rectangular region and are accepted to directly produce a random variate. For the non-rectangular regions, which occur 1.5% of the time, the exponential or logarithm functions must be computed and an iterative x ed point operation unit is used. Computation of the rectangular region is heavily pipelined and a buffering scheme is used to allow the processing of rectangular regions to continue to operate in parallel with evaluation of the wedge and tail computation. The resulting system can generate 169 mil- lion normally distributed random numbers per second on a Xilinx XC2VP30-6 device.

This publication has 9 references indexed in Scilit: