| 
									
										
										
										
											1998-08-10 19:42:37 +00:00
										 |  |  | \section{\module{random} --- | 
					
						
							| 
									
										
										
										
											1999-04-21 18:14:22 +00:00
										 |  |  |          Generate pseudo-random numbers} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-21 18:14:22 +00:00
										 |  |  | \declaremodule{standard}{random} | 
					
						
							| 
									
										
										
										
											1998-08-10 19:42:37 +00:00
										 |  |  | \modulesynopsis{Generate pseudo-random numbers with various common | 
					
						
							| 
									
										
										
										
											1999-04-21 18:14:22 +00:00
										 |  |  |                 distributions.} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The \module{random} module supports the \emph{Random Number | 
					
						
							|  |  |  | Generator} interface, described in section \ref{rng-objects}.  This | 
					
						
							|  |  |  | interface of the module, as well as the distribution-specific | 
					
						
							|  |  |  | functions described below, all use the pseudo-random generator | 
					
						
							|  |  |  | provided by the \refmodule{whrandom} module. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following functions are defined to support specific distributions, | 
					
						
							|  |  |  | 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.  These are expected to become part of the Random | 
					
						
							|  |  |  | Number Generator interface in a future release. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{betavariate}{alpha, beta} | 
					
						
							|  |  |  | Beta distribution.  Conditions on the parameters are | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \code{\var{alpha} > -1} and \code{\var{beta} > -1}. | 
					
						
							|  |  |  | Returned values range between 0 and 1. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{cunifvariate}{mean, arc} | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											1999-04-21 18:14:22 +00:00
										 |  |  | between 0 and \emph{pi}.  Returned values will range between | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \code{\var{mean} - \var{arc}/2} and \code{\var{mean} + \var{arc}/2}. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{expovariate}{lambd} | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | Exponential distribution.  \var{lambd} is 1.0 divided by the desired | 
					
						
							|  |  |  | mean.  (The parameter would be called ``lambda'', but that is a | 
					
						
							|  |  |  | reserved word in Python.)  Returned values will range from 0 to | 
					
						
							|  |  |  | positive infinity. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{gamma}{alpha, beta} | 
					
						
							|  |  |  | Gamma distribution.  (\emph{Not} the gamma function!)  Conditions on | 
					
						
							| 
									
										
										
										
											1998-04-03 06:04:12 +00:00
										 |  |  | the parameters are \code{\var{alpha} > -1} and \code{\var{beta} > 0}. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{gauss}{mu, sigma} | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | Gaussian distribution.  \var{mu} is the mean, and \var{sigma} is the | 
					
						
							|  |  |  | standard deviation.  This is slightly faster than the | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \function{normalvariate()} function defined below. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{lognormvariate}{mu, sigma} | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | Log normal distribution.  If you take the natural logarithm of this | 
					
						
							|  |  |  | distribution, you'll get a normal distribution with mean \var{mu} and | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | standard deviation \var{sigma}.  \var{mu} can have any value, and | 
					
						
							|  |  |  | \var{sigma} must be greater than zero.   | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{normalvariate}{mu, sigma} | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | Normal distribution.  \var{mu} is the mean, and \var{sigma} is the | 
					
						
							|  |  |  | standard deviation. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{vonmisesvariate}{mu, kappa} | 
					
						
							| 
									
										
										
										
											1999-04-21 18:14:22 +00:00
										 |  |  | \var{mu} is the mean angle, expressed in radians between 0 and 2*\emph{pi}, | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | and \var{kappa} is the concentration parameter, which must be greater | 
					
						
							| 
									
										
										
										
											1998-04-20 14:43:44 +00:00
										 |  |  | than or equal to zero.  If \var{kappa} is equal to zero, this | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | distribution reduces to a uniform random angle over the range 0 to | 
					
						
							| 
									
										
										
										
											1999-04-21 18:14:22 +00:00
										 |  |  | 2*\emph{pi}. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-12-30 17:38:05 +00:00
										 |  |  | \begin{funcdesc}{paretovariate}{alpha} | 
					
						
							|  |  |  | Pareto distribution.  \var{alpha} is the shape parameter. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{weibullvariate}{alpha, beta} | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | Weibull distribution.  \var{alpha} is the scale parameter and | 
					
						
							| 
									
										
										
										
											1997-12-30 17:38:05 +00:00
										 |  |  | \var{beta} is the shape parameter. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{seealso} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |   \seemodule{whrandom}{The standard Python random number generator.} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | \end{seealso} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \subsection{The Random Number Generator Interface | 
					
						
							|  |  |  |             \label{rng-objects}} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | % XXX This *must* be updated before a future release!
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The \dfn{Random Number Generator} interface describes the methods | 
					
						
							|  |  |  | which are available for all random number generators.  This will be | 
					
						
							|  |  |  | enhanced in future releases of Python. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In this release of Python, the modules \refmodule{random}, | 
					
						
							|  |  |  | \refmodule{whrandom}, and instances of the | 
					
						
							|  |  |  | \class{whrandom.whrandom} class all conform to this interface. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{choice}{seq} | 
					
						
							|  |  |  | Chooses a random element from the non-empty sequence \var{seq} and | 
					
						
							|  |  |  | returns it. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{randint}{a, b} | 
					
						
							| 
									
										
										
										
											2000-06-30 15:32:31 +00:00
										 |  |  | \deprecated{2.0}{Use \function{randrange()} instead.} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | Returns a random integer \var{N} such that | 
					
						
							|  |  |  | \code{\var{a} <= \var{N} <= \var{b}}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{random}{} | 
					
						
							|  |  |  | Returns the next random floating point number in the range [0.0 | 
					
						
							|  |  |  | ... 1.0). | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-06-30 15:32:31 +00:00
										 |  |  | \begin{funcdesc}{randrange}{\optional{start,} stop\optional{, step}} | 
					
						
							|  |  |  | Return a randomly selected element from \code{range(\var{start}, | 
					
						
							|  |  |  | \var{stop}, \var{step})}.  This is equivalent to | 
					
						
							|  |  |  | \code{choice(range(\var{start}, \var{stop}, \var{step}))}. | 
					
						
							|  |  |  | \versionadded{1.5.2} | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \begin{funcdesc}{uniform}{a, b} | 
					
						
							|  |  |  | Returns a random real number \var{N} such that | 
					
						
							|  |  |  | \code{\var{a} <= \var{N} < \var{b}}. | 
					
						
							|  |  |  | \end{funcdesc} |