code: function rgamma(a, s) {
        if (a < 1) { return gammaBest(a, s); }
        if (a > 1) { return gammaCheng(a, s); }
        return exponential(1 / s);
     }
docs: rgamma stuff... Client calls one of three methods depending on the value of a. a for 'shape', s for 'scale' 
  Returns a random variate from the $\textrm{Gamma}(a, s)$ distribution.
  
  Expects $a > 0$ and $s > 0$.
  
  Based on:
  - *Some simple gamma variate generators*, by Cheng and Feast, 1979
  - *Computer methods for sampling from gamma, beta, Poisson and binomial
  distributions*, by Ahrens and Dieter, 1974
  - *A note on gamma variate generators with shape parameter less than
  unity*, by Best, 1983
  
  As seen in: *Random Number Generation and Monte Carlo Methods, Second Edition*,
  by Gentle, Springer 2005
  @fullName rgamma(a, s)()
  @memberof gamma