\section{Standard Module \sectcode{random}}
\stmodindex{random}

This module implements pseudo-random number generators for various
distributions: on the real line, there are functions to compute normal
or Gaussian, lognormal, negative exponential, gamma, and beta
distributions.  For generating distribution of angles, the circular
uniform and von Mises distributions are available.

The module exports the following functions, which are exactly
equivalent to those in the \code{whrandom} module: \code{choice},
\code{randint}, \code{random}, \code{uniform}.  See the documentation
for the \code{whrandom} module for these functions.

The following functions specific to the \code{random} module are also
defined, and all return real values.  Function parameters are named
after the corresponding variables in the distribution's equation, as
used in common mathematical practice; most of these equations can be
found in any statistics text.

\renewcommand{\indexsubitem}{(in module random)}
\begin{funcdesc}{betavariate}{alpha\, beta}
Beta distribution.  Conditions on the parameters are \code{alpha>-1}
and \code{beta>-1}.
Returned values will range between 0 and 1.
\end{funcdesc}

\begin{funcdesc}{cunifvariate}{mean\, arc}
Circular uniform distribution.  \var{mean} is the mean angle, and
\var{arc} is the range of the distribution, centered around the mean
angle.  Both values must be expressed in radians, and can range
between 0 and \code{pi}.  Returned values will range between
\code{mean - arc/2} and \code{mean + arc/2}.
\end{funcdesc}

\begin{funcdesc}{expovariate}{lambd}
Exponential distribution.  \var{lambd} is 1.0 divided by the desired mean.
(The parameter would be called ``lambda'', but that's also a reserved
word in Python.)  Returned values will range from 0 to positive infinity.
\end{funcdesc}

\begin{funcdesc}{gamma}{alpha\, beta}
Gamma distribution.  (\emph{Not} the gamma function!) 
Conditions on the parameters are \code{alpha>-1} and \code{beta>0}.
\end{funcdesc}

\begin{funcdesc}{gauss}{mu\, sigma}
Gaussian distribution.  \var{mu} is the mean, and \var{sigma} is the
standard deviation.  This is slightly faster than the
\code{normalvariate} function defined below.
\end{funcdesc}

\begin{funcdesc}{lognormvariate}{mu\, sigma}
Log normal distribution.  If you take the natural logarithm of this
distribution, you'll get a normal distribution with mean \var{mu} and
standard deviation \var{sigma}  \var{mu} can have any value, and \var{sigma}
must be greater than zero.  
\end{funcdesc}

\begin{funcdesc}{normalvariate}{mu\, sigma}
Normal distribution.  \var{mu} is the mean, and \var{sigma} is the
standard deviation.
\end{funcdesc}

\begin{funcdesc}{vonmisesvariate}{mu\, kappa}
\var{mu} is the mean angle, expressed in radians between 0 and pi,
and \var{kappa} is the concentration parameter, which must be greater
then or equal to zero.  If \var{kappa} is equal to zero, this
distribution reduces to a uniform random angle over the range 0 to
\code{2*pi}.
\end{funcdesc}
