ExpGaussRand

From Odwiki

Jump to: navigation, search

This is one of the odWiki CustomExpressions for Houdini which will return a random number in a GaussianDistribution

float
ExpGaussRand( idum )
{
        idum = idum * -1;
        v1 = 2.0 * rand(idum) - 1.0;
        idum = idum + .01;
        v2 = 2.0 * rand(idum) - 1.0;
        idum = idum + .01;
        rsq = v1 * v1 + v2 * v2;
        while (rsq >= 1.0 || rsq == 0.0) {
                v1 = 2.0 * rand(idum) - 1.0;
                idum = idum + .01;
                v2 = 2.0 * rand(idum) - 1.0;
                idum = idum + .01;
                rsq = v1 * v1 + v2 * v2;
        }
        fac = sqrt(-2.0 * log(rsq) / rsq);
        return v2 * fac;
}
© 2009 od[force].net | advertise