Random Numbers¶
Functions to compute pseudorandom numbers.
#include <Imath/ImathRandom.h>

template<class Vec, class Rand>
Vec Imath::solidSphereRand(Rand &rand)¶ Return random points uniformly distributed in a sphere with radius 1 around the origin (distance from origin <= 1).

template<class Vec, class Rand>
Vec Imath::hollowSphereRand(Rand &rand)¶ Return random points uniformly distributed on the surface of a sphere with radius 1 around the origin.

template<class Vec, class Rand>
Vec Imath::gaussSphereRand(Rand &rand)¶ Return random points whose distance from the origin has a normal (Gaussian) distribution with zero mean and unit variance.

template<class Rand>
float Imath::gaussRand(Rand &rand)¶ Return random numbers with a normal (Gaussian) distribution with zero mean and unit variance.

double Imath::erand48(unsigned short state[3])¶
Generate doubleprecision floatingpoint values between 0.0 and 1.0:
The exponent is set to 0x3ff, which indicates a value greater than or equal to 1.0, and less than 2.0. The 48 most significant bits of the significand (mantissa) are filled with pseudorandom bits generated by rand48Next(). The remaining 4 bits are a copy of the 4 most significant bits of the significand. This results in bit patterns between 0x3ff0000000000000 and 0x3fffffffffffffff, which correspond to uniformly distributed floatingpoint values between 1.0 and 1.99999999999999978. Subtracting 1.0 from those values produces numbers between 0.0 and 0.99999999999999978, that is, between 0.0 and 1.0DBL_EPSILON.

double Imath::drand48()¶
Return erand48()

long int Imath::nrand48(unsigned short state[3])¶
Generate uniformly distributed integers between 0 and 0x7fffffff.

long int Imath::lrand48()¶
Return nrand48()

void Imath::srand48(long int seed)¶