public double nextDouble(double degreesOfFreedom){
  if (degreesOfFreedom <= 0.0)   throw new IllegalArgumentException();
  double u, v, w;
  do {
    u=2.0 * randomGenerator.raw() - 1.0;
    v=2.0 * randomGenerator.raw() - 1.0;
  }
 while ((w=u * u + v * v) > 1.0);
  return (u * Math.sqrt(degreesOfFreedom * (Math.exp(-2.0 / degreesOfFreedom * Math.log(w)) - 1.0) / w));
}

public double nextDouble ( double degreesOfFreedom ) { if ( degreesOfFreedom <= 0.0 ) throw new IllegalArgumentException ( ) ; double u , v , w ; do { u = 2.0 * randomGenerator . raw ( ) - 1.0 ; v = 2.0 * randomGenerator . raw ( ) - 1.0 ; } while ( ( w = u * u + v * v ) > 1.0 ) ; return ( u * Math . sqrt ( degreesOfFreedom * ( Math . exp ( - 2.0 / degreesOfFreedom * Math . log ( w ) ) - 1.0 ) / w ) ) ; }
returns a random number from the distribution ; bypasses the internal state .
