Generates pseudo-random numbers from probability distributions (D.M. Roberts & P.W. Lane).

### Options

`DISTRIBUTION` = string token |
Type of distribution required (`beta` , `chisquare` , `exponential` , `F` , `gamma` , `logNormal` , `Normal` , `t` , `uniform` , `Weibull` , `binomial` , `hypergeometric` , `Poisson` ); default `Norm` |
---|---|

`NVALUES` = scalar |
Number of values to generate; default 1 |

`SEED` = scalar |
Seed to start random number generation; default set by `CALCULATE` or continued from previous generation |

`MEAN` = scalar |
Mean for distribution, except for Weibull or hypergeometric); default 0 for Normal distribution and 1 for Poisson and exponential, otherwise `*` |

`VARIANCE` = scalar |
Variance for distribution, except for the Weibull or hypergeometric; must be positive; default `*` , except for Normal when default is 1 |

`LOWER` = scalar |
Lower bound for the uniform or beta distribution; default 0 |

`UPPER` = scalar |
Upper bound for the uniform or beta distribution; default 1 |

`LOCATION` = scalar |
Location parameter for the log-Normal, gamma or Weibull distribution; default 0 |

`SCALE` = scalar |
Scale parameter for the Weibull distribution; must be positive; default 1 |

`SHAPE` = scalar |
Shape parameter for the Weibull distribution; must be positive; default 1 |

`ABETA` = scalar |
First shape parameter for the beta distribution; must be positive; default 1 |

`BBETA` = scalar |
Second shape parameter for the beta distribution; must be positive; default 1 |

`AGAMMA` = scalar |
Location-scale parameter for the gamma distribution, must be positive, usually denoted by alpha or theta; default 1 |

`BGAMMA` = scalar |
Shape parameter for the gamma distribution, must be positive, usually denoted by beta or kappa; default 1 |

`DF` = scalar |
Number of degrees of freedom for the t or chi distribution, must be 1 or greater; default 1 |

`DFNUMERATOR` = scalar |
Number of degrees of freedom of the numerator for the F distribution, must be 1.0 or greater; default 1 |

`DFDENOMINATOR` = scalar |
Number of degrees of freedom of the denominator for the F distribution, must be 1.0 or greater; default 1 |

`NBINOMIAL` = scalar |
Number of binomial trials for the binomial distribution, must be positive; default 1 |

`PROBABILITY` = scalar |
probability of success for the binomial or hypergeometric distribution, must be positive and not greater than 1; default 0.5 |

`NHYPERGEOMETRIC` = scalar |
Number of elements for the hypergeometric distribution, must be positive; default 1 |

`SSHYPERGEOMETRIC` = scalar |
Sample size for the hypergeometric distribution, must be positive and less than `NHYPERGEOMETRIC` ; default 1 |

### Parameter

`NUMBERS` = scalar or variate |
The generated numbers are returned here; if the length of the supplied structure is defined, it must equal the setting of the `NVALUES` option |
---|

### Description

`GRANDOM`

generates pseudo-random numbers from the beta, chi-square, exponential, F, gamma, log-Normal, Normal, Student’s t, uniform, Weibull, binomial, hypergeometric and poisson distributions.

The `NUMBERS`

parameter of `GRANDOM`

must be set to a scalar or variate to store the generated numbers. The `NVALUES`

option can be set to specify how many values are required; if this is unset, a single value is generated. The `SEED`

option can be set to initialize the random-number generator, hence giving identical results if the procedure is called again with the same options. If `SEED`

is unset, generation will continue from the previous sequence in the program, or, if this is the first generation, the generator will be initialized by `CALCULATE`

.

Most distributions can be specified by their mean and variance. In `GRANDOM`

these are defined by the `MEAN`

and `VARIANCE`

options. For some distributions there are other defining parameters, which are often more convenient. These can be set by other options relevant to the distribution concerned.

Normal distributions can be defined only by mean and variance; by default these are zero and one respectively. For the exponential and Poisson distributions, either one of these is sufficient to define the distribution and if neither is given the mean is set to one. For the Poisson if both are specified they must be equal, while for the exponential the variance is the square of the mean. The chi-square distribution can be defined by any one of the `DF`

, `MEAN`

or `VARIANCE`

options (the mean is equal to the degrees of freedom, and the variance to twice the degrees of freedom). Similarly, the Student’s t distribution can be defined by either the `DF`

or the `VARIANCE`

option; if `MEAN`

is set, it must be zero. The F distribution can be generated by setting either the `MEAN`

and `VARIANCE`

options or the `DFDENOMINATOR`

and `DFNUMERATOR`

options.

The binomial distribution can be specified either by the `MEAN`

and `VARIANCE`

options (with `MEAN`

greater than `VARIANCE`

), or by the `NBINOMIAL`

and `PROBABILITY`

options. However, the hypergeometric distribution cannot be specified by `MEAN`

and `VARIANCE`

: instead the three options `PROBABILITY`

, `NHYPERGEOMETRIC`

and `SSHYPERGEOMETRIC`

must be used.

The uniform distribution in the range (0,1) can be generated by setting the single option `DIST=uniform`

. However, you can set the `MEAN`

and `VARIANCE`

options, or the `LOWER`

and `UPPER`

options, to get a uniform distribution in any other range. Similarly, the beta distribution is generated by default in the range (0,1), by setting the `MEAN`

and `VARIANCE`

options, or the `ABETA`

and `BBETA`

options: the mean is *A*/(*A*+*B*) and the variance is *AB*/((*A*+*B*+1)×(*A*+*B*)^{2}). By setting the `LOWER`

and `UPPER`

options, the four-parameter beta distribution is generated, within the specified range.

The two-parameter gamma distribution can be generated by setting either the `MEAN`

and `VARIANCE`

options, or the `AGAMMA`

and `BGAMMA`

options. (The mean is *AB* and the variance is *AB*^{2}: *A* is sometimes denoted by α or θ, and *B* by β or κ.) The three-parameter gamma can be generated by setting the `LOCATION`

option, which simply has the effect of shifting a two-parameter gamma distribution. Similarly, the two- and three-parameter log-Normal distributions can be generated, though using the `SCALE`

and `SHAPE`

options rather than `AGAMMA`

and `BGAMMA`

. (If `LOCATION`

is zero, the mean is *sc* × exp(*sh*^{2}/2) and the variance is *sc*^{2} × exp(*sh*^{2}) × (exp(*sh*^{2})-1; the square of the shape parameter is the variance of the associated Normal distribution, and the log(`SCALE`

) is the mean.) The three-parameter Weibull is defined also by the `LOCATION`

, `SCALE`

and `SHAPE`

options: it cannot be specified in terms of `MEAN`

and `VARIANCE`

. (The mean of the distribution is `LOCATION`

+`SCALE`

×G(1+1/`SHAPE`

) and the variance is `SCALE`

^{2}×G(1+2/`SHAPE`

)-(G(1+1/`SHAPE`

))^{2}), where G() is the gamma function.)

Options: `DISTRIBUTION`

, `NVALUES`

, `SEED`

, `MEAN`

, `VARIANCE`

, `LOWER`

, `UPPER`

, `LOCATION`

, `SCALE`

, `SHAPE`

, `ABETA`

, `BBETA`

, `AGAMMA`

, `BGAMMA`

, `DF`

, `DFNUMERATOR`

, `DFDENOMINATOR`

, `NBINOMIAL`

, `PROBABILITY`

, `NHYPERGEOMETRIC`

, `SSHYPERGEOMETRIC`

.

Parameter: `NUMBERS`

.

### Method

`GRANDOM`

uses the “table look-up” method for the majority of the distributions, using the `ED**`

functions in the `CALCULATE`

directive. It uses the transformation method for the Weibull distribution, and the rejection method for the binomial, hypergeometric and Poisson distributions.

### Action with `RESTRICT`

A variate that has been restricted will receive output from `GRANDOM`

only in those units that are not excluded by the restriction. Values in the excluded units remain unchanged. Note that the `NVALUES`

option must equal the full size of the variate.

### See also

Directive: `CALCULATE`

.

Procedures: `GRCSR`

, `GREJECTIONSAMPLE`

, `GRLABEL`

, `GRMULTINORMAL`

, `GRTHIN`

, `GRTORSHIFT`

, `SAMPLE`

, `SVSAMPLE`

.

Functions: `GRBETA`

, `GRBINOMIAL`

, `GRCHISQUARE`

, `GRF`

, `GRGAMMA`

, `GRHYPERGEOMETRIC`

, `GRLOGNORMAL`

, `GRNORMAL`

, `GRPOISSON`

, `GRSAMPLE`

, `GRSELECT`

, `GRT`

, `GRUNIFORM`

.

Commands for: Calculations and manipulation.

### Example

CAPTION 'GRANDOM example',\ 'Generate 250 values from the standard Normal distribution.';\ STYLE=meta,plain GRANDOM [NVALUES=250; SEED=26354] Normal " generate 250 gamma values, defining mean and variance " GRANDOM [DISTRIBUTION=gamma; MEAN=2.5; VARIANCE=5;\ SEED=553616; NVALUES=250] Gamma1 " generate the same values, defining distribution parameters " GRANDOM [DISTRIBUTION=gamma; AGAMMA=1.25; BGAMMA=2;\ SEED=553616; NVALUES=250] Gamma2 HISTOGRAM Normal,Gamma1,Gamma2