| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  | distributions. | 
					
						
							|  |  |  | For integers, uniform selection from a range. | 
					
						
							|  |  |  | For sequences, uniform selection of a random element, and a function to | 
					
						
							|  |  |  | generate a random permutation of a list in-place. | 
					
						
							|  |  |  | On the real line, there are functions to compute uniform, normal (Gaussian), | 
					
						
							|  |  |  | lognormal, negative exponential, gamma, and beta distributions. | 
					
						
							|  |  |  | For generating distribution of angles, the circular uniform and | 
					
						
							|  |  |  | von Mises distributions are available. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Almost all module functions depend on the basic function | 
					
						
							|  |  |  | \function{random()}, which generates a random float uniformly in | 
					
						
							|  |  |  | the semi-open range [0.0, 1.0).  Python uses the standard Wichmann-Hill | 
					
						
							|  |  |  | generator, combining three pure multiplicative congruential | 
					
						
							|  |  |  | generators of modulus 30269, 30307 and 30323.  Its period (how many | 
					
						
							|  |  |  | numbers it generates before repeating the sequence exactly) is | 
					
						
							|  |  |  | 6,953,607,871,644.  While of much higher quality than the \function{rand()} | 
					
						
							|  |  |  | function supplied by most C libraries, the theoretical properties | 
					
						
							|  |  |  | are much the same as for a single linear congruential generator of | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  | large modulus.  It is not suitable for all purposes, and is completely | 
					
						
							|  |  |  | unsuitable for cryptographic purposes. | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The functions in this module are not threadsafe:  if you want to call these | 
					
						
							|  |  |  | functions from multiple threads, you should explicitly serialize the calls. | 
					
						
							|  |  |  | Else, because no critical sections are implemented internally, calls | 
					
						
							|  |  |  | from different threads may see the same return values. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-25 03:36:26 +00:00
										 |  |  | The functions supplied by this module are actually bound methods of a | 
					
						
							| 
									
										
										
										
											2001-02-02 02:42:31 +00:00
										 |  |  | hidden instance of the \class{random.Random} class.  You can | 
					
						
							|  |  |  | instantiate your own instances of \class{Random} to get generators | 
					
						
							|  |  |  | that don't share state.  This is especially useful for multi-threaded | 
					
						
							|  |  |  | programs, creating a different instance of \class{Random} for each | 
					
						
							|  |  |  | thread, and using the \method{jumpahead()} method to ensure that the | 
					
						
							|  |  |  | generated sequences seen by each thread don't overlap (see example | 
					
						
							|  |  |  | below). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Class \class{Random} can also be subclassed if you want to use a | 
					
						
							|  |  |  | different basic generator of your own devising: in that case, override | 
					
						
							|  |  |  | the \method{random()}, \method{seed()}, \method{getstate()}, | 
					
						
							| 
									
										
										
										
											2001-01-25 06:23:18 +00:00
										 |  |  | \method{setstate()} and \method{jumpahead()} methods. | 
					
						
							| 
									
										
										
										
											2001-01-25 03:36:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-26 10:00:39 +00:00
										 |  |  | Here's one way to create threadsafe distinct and non-overlapping generators: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | def create_generators(num, delta, firstseed=None): | 
					
						
							|  |  |  |     """Return list of num distinct generators. | 
					
						
							|  |  |  |     Each generator has its own unique segment of delta elements | 
					
						
							|  |  |  |     from Random.random()'s full period. | 
					
						
							|  |  |  |     Seed the first generator with optional arg firstseed (default | 
					
						
							|  |  |  |     is None, to seed from current time). | 
					
						
							|  |  |  |     """ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     from random import Random | 
					
						
							|  |  |  |     g = Random(firstseed) | 
					
						
							|  |  |  |     result = [g] | 
					
						
							|  |  |  |     for i in range(num - 1): | 
					
						
							|  |  |  |         laststate = g.getstate() | 
					
						
							|  |  |  |         g = Random() | 
					
						
							|  |  |  |         g.setstate(laststate) | 
					
						
							|  |  |  |         g.jumpahead(delta) | 
					
						
							|  |  |  |         result.append(g) | 
					
						
							|  |  |  |     return result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gens = create_generators(10, 1000000) | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-02-01 15:53:24 +00:00
										 |  |  | That creates 10 distinct generators, which can be passed out to 10 | 
					
						
							|  |  |  | distinct threads.  The generators don't share state so can be called | 
					
						
							|  |  |  | safely in parallel.  So long as no thread calls its \code{g.random()} | 
					
						
							|  |  |  | more than a million times (the second argument to | 
					
						
							|  |  |  | \function{create_generators()}, the sequences seen by each thread will | 
					
						
							|  |  |  | not overlap.  The period of the underlying Wichmann-Hill generator | 
					
						
							|  |  |  | limits how far this technique can be pushed. | 
					
						
							| 
									
										
										
										
											2001-01-26 10:00:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-02-01 15:53:24 +00:00
										 |  |  | Just for fun, note that since we know the period, \method{jumpahead()} | 
					
						
							|  |  |  | can also be used to ``move backward in time:'' | 
					
						
							| 
									
										
										
										
											2001-01-26 10:00:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | >>> g = Random(42)  # arbitrary | 
					
						
							|  |  |  | >>> g.random() | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  | 0.25420336316883324 | 
					
						
							| 
									
										
										
										
											2001-01-26 10:00:39 +00:00
										 |  |  | >>> g.jumpahead(6953607871644L - 1) # move *back* one | 
					
						
							|  |  |  | >>> g.random() | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  | 0.25420336316883324 | 
					
						
							| 
									
										
										
										
											2001-01-26 10:00:39 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-25 03:36:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Bookkeeping functions: | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{seed}{\optional{x}} | 
					
						
							|  |  |  |   Initialize the basic random number generator. | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  |   Optional argument \var{x} can be any hashable object. | 
					
						
							| 
									
										
										
										
											2001-04-21 05:56:06 +00:00
										 |  |  |   If \var{x} is omitted or \code{None}, current system time is used; | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  |   current system time is also used to initialize the generator when the | 
					
						
							|  |  |  |   module is first imported. | 
					
						
							| 
									
										
										
										
											2001-04-21 05:56:06 +00:00
										 |  |  |   If \var{x} is not \code{None} or an int or long, | 
					
						
							| 
									
										
										
										
											2001-02-01 15:53:24 +00:00
										 |  |  |   \code{hash(\var{x})} is used instead. | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  |   If \var{x} is an int or long, \var{x} is used directly. | 
					
						
							|  |  |  |   Distinct values between 0 and 27814431486575L inclusive are guaranteed | 
					
						
							|  |  |  |   to yield distinct internal states (this guarantee is specific to the | 
					
						
							|  |  |  |   default Wichmann-Hill generator, and may not apply to subclasses | 
					
						
							|  |  |  |   supplying their own basic generator). | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{whseed}{\optional{x}} | 
					
						
							|  |  |  |   This is obsolete, supplied for bit-level compatibility with versions | 
					
						
							|  |  |  |   of Python prior to 2.1. | 
					
						
							|  |  |  |   See \function{seed} for details.  \function{whseed} does not guarantee | 
					
						
							|  |  |  |   that distinct integer arguments yield distinct internal states, and can | 
					
						
							|  |  |  |   yield no more than about 2**24 distinct internal states in all. | 
					
						
							| 
									
										
										
										
											2001-01-25 00:39:16 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-25 03:36:26 +00:00
										 |  |  | \begin{funcdesc}{getstate}{} | 
					
						
							| 
									
										
										
										
											2001-02-02 02:42:31 +00:00
										 |  |  |   Return an object capturing the current internal state of the | 
					
						
							|  |  |  |   generator.  This object can be passed to \function{setstate()} to | 
					
						
							|  |  |  |   restore the state. | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  |   \versionadded{2.1} | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2001-01-25 03:36:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{setstate}{state} | 
					
						
							|  |  |  |   \var{state} should have been obtained from a previous call to | 
					
						
							| 
									
										
										
										
											2001-02-02 02:42:31 +00:00
										 |  |  |   \function{getstate()}, and \function{setstate()} restores the | 
					
						
							|  |  |  |   internal state of the generator to what it was at the time | 
					
						
							|  |  |  |   \function{setstate()} was called. | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  |   \versionadded{2.1} | 
					
						
							| 
									
										
										
										
											2001-02-02 02:42:31 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-25 06:23:18 +00:00
										 |  |  | \begin{funcdesc}{jumpahead}{n} | 
					
						
							| 
									
										
										
										
											2001-02-02 02:42:31 +00:00
										 |  |  |   Change the internal state to what it would be if \function{random()} | 
					
						
							|  |  |  |   were called \var{n} times, but do so quickly.  \var{n} is a | 
					
						
							|  |  |  |   non-negative integer.  This is most useful in multi-threaded | 
					
						
							| 
									
										
										
										
											2001-04-21 05:56:06 +00:00
										 |  |  |   programs, in conjuction with multiple instances of the \class{Random} | 
					
						
							| 
									
										
										
										
											2001-02-02 02:42:31 +00:00
										 |  |  |   class: \method{setstate()} or \method{seed()} can be used to force | 
					
						
							|  |  |  |   all instances into the same internal state, and then | 
					
						
							|  |  |  |   \method{jumpahead()} can be used to force the instances' states as | 
					
						
							|  |  |  |   far apart as you like (up to the period of the generator). | 
					
						
							| 
									
										
										
										
											2001-02-01 04:59:18 +00:00
										 |  |  |   \versionadded{2.1} | 
					
						
							| 
									
										
										
										
											2001-01-25 06:23:18 +00:00
										 |  |  |  \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2001-01-25 03:36:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Functions for integers: | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +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 | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  |   \code{choice(range(\var{start}, \var{stop}, \var{step}))}, | 
					
						
							|  |  |  |   but doesn't actually build a range object. | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   \versionadded{1.5.2} | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-25 03:36:26 +00:00
										 |  |  | \begin{funcdesc}{randint}{a, b} | 
					
						
							|  |  |  |   Return a random integer \var{N} such that | 
					
						
							|  |  |  |   \code{\var{a} <= \var{N} <= \var{b}}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Functions for sequences: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{choice}{seq} | 
					
						
							|  |  |  |   Return a random element from the non-empty sequence \var{seq}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{shuffle}{x\optional{, random}} | 
					
						
							|  |  |  |   Shuffle the sequence \var{x} in place. | 
					
						
							|  |  |  |   The optional argument \var{random} is a 0-argument function | 
					
						
							|  |  |  |   returning a random float in [0.0, 1.0); by default, this is the | 
					
						
							|  |  |  |   function \function{random()}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Note that for even rather small \code{len(\var{x})}, the total | 
					
						
							|  |  |  |   number of permutations of \var{x} is larger than the period of most | 
					
						
							|  |  |  |   random number generators; this implies that most permutations of a | 
					
						
							|  |  |  |   long sequence can never be generated. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following functions generate specific real-valued distributions. | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  | \begin{funcdesc}{random}{} | 
					
						
							|  |  |  |   Return the next random floating point number in the range [0.0, 1.0). | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  | \begin{funcdesc}{uniform}{a, b} | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  |   Return a random real number \var{N} such that | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   \code{\var{a} <= \var{N} < \var{b}}. | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{betavariate}{alpha, beta} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   Beta distribution.  Conditions on the parameters are | 
					
						
							|  |  |  |   \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} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +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 | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  |   between 0 and \emph{pi}.  Returned values range between | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   \code{\var{mean} - \var{arc}/2} and \code{\var{mean} + | 
					
						
							| 
									
										
										
										
											2002-05-23 19:44:49 +00:00
										 |  |  |   \var{arc}/2} and are normalized to between 0 and \emph{pi}. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-05-23 21:07:19 +00:00
										 |  |  |   \deprecated{2.3}{Instead, use \code{(\var{mean} + \var{arc} * | 
					
						
							|  |  |  |                    (random.random() - 0.5)) \% math.pi}.} | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{expovariate}{lambd} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   Exponential distribution.  \var{lambd} is 1.0 divided by the desired | 
					
						
							|  |  |  |   mean.  (The parameter would be called ``lambda'', but that is a | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  |   reserved word in Python.)  Returned values range from 0 to | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   positive infinity. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-05-13 22:40:38 +00:00
										 |  |  | \begin{funcdesc}{gammavariate}{alpha, beta} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   Gamma distribution.  (\emph{Not} the gamma function!)  Conditions on | 
					
						
							| 
									
										
										
										
											2002-05-13 23:49:13 +00:00
										 |  |  |   the parameters are \code{\var{alpha} > 0} 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} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   Gaussian distribution.  \var{mu} is the mean, and \var{sigma} is the | 
					
						
							|  |  |  |   standard deviation.  This is slightly faster than the | 
					
						
							|  |  |  |   \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} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +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 standard deviation \var{sigma}.  \var{mu} can have any value, | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  |   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} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   Normal distribution.  \var{mu} is the mean, and \var{sigma} is the | 
					
						
							|  |  |  |   standard deviation. | 
					
						
							| 
									
										
										
										
											1997-04-03 22:41:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-03-08 08:13:53 +00:00
										 |  |  | \begin{funcdesc}{vonmisesvariate}{mu, kappa} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   \var{mu} is the mean angle, expressed in radians between 0 and | 
					
						
							|  |  |  |   2*\emph{pi}, and \var{kappa} is the concentration parameter, which | 
					
						
							|  |  |  |   must be greater than or equal to zero.  If \var{kappa} is equal to | 
					
						
							|  |  |  |   zero, this distribution reduces to a uniform random angle over the | 
					
						
							|  |  |  |   range 0 to 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} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   Pareto distribution.  \var{alpha} is the shape parameter. | 
					
						
							| 
									
										
										
										
											1997-12-30 17:38:05 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{funcdesc}{weibullvariate}{alpha, beta} | 
					
						
							| 
									
										
										
										
											2001-01-22 18:18:30 +00:00
										 |  |  |   Weibull distribution.  \var{alpha} is the scale parameter and | 
					
						
							|  |  |  |   \var{beta} is the shape parameter. | 
					
						
							| 
									
										
										
										
											1997-12-30 17:38:05 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-12-15 19:07:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | \begin{seealso} | 
					
						
							| 
									
										
										
										
											2001-01-24 23:06:53 +00:00
										 |  |  |   \seetext{Wichmann, B. A. \& Hill, I. D., ``Algorithm AS 183: | 
					
						
							|  |  |  |            An efficient and portable pseudo-random number generator'', | 
					
						
							|  |  |  |            \citetitle{Applied Statistics} 31 (1982) 188-190.} | 
					
						
							| 
									
										
										
										
											1997-07-17 16:34:52 +00:00
										 |  |  | \end{seealso} |