35#include <visp3/core/vpGaussRand.h>
45double vpGaussRand::gaussianDraw()
48 m_AlreadyDone =
false;
54 double v1 = 0, v2 = 0, rsq = 0;
56 v1 = (val_2 * m_rng.uniform(0.0, 1.0)) - 1;
57 v2 = (val_2 * m_rng.uniform(0.0, 1.0)) - 1;
58 rsq = (v1 * v1) + (v2 * v2);
61 double fac = sqrt((-2 * log(rsq)) / rsq);