### 26.7 Random Number Generation ¶

Octave can generate random numbers from a large number of distributions. The random number generators are based on the random number generators described in Special Utility Matrices.

The following table summarizes the available random number generators (in alphabetical order).

Distribution | Function
--- | ---
Univariate Discrete Distribution | `discrete_rnd`
Empirical Distribution | `empirical_rnd`
Exponential Distribution | `rande`
Gamma Distribution | `randg`
Poisson Distribution | `randp`
Standard Normal Distribution | `randn`
Uniform Distribution | `rand`
Uniform Distribution (integers) | `randi`

`rnd =` discrete_rnd `(v, p)` ¶
`rnd =` discrete_rnd `(v, p, r)` ¶
`rnd =` discrete_rnd `(v, p, r, c, …)` ¶
`rnd =` discrete_rnd `(v, p, [sz])` ¶

  Return a matrix of random samples from the univariate distribution which assumes the values in v with probabilities p.

  When called with a single size argument, return a square matrix with the dimension specified. When called with more than one scalar argument the first two arguments are taken as the number of rows and columns and any further arguments specify additional matrix dimensions. The size may also be specified with a vector of dimensions sz.

  If no size arguments are given then the result matrix is the common size of v and p.

`rnd =` empirical_rnd `(data)` ¶
`rnd =` empirical_rnd `(data, r)` ¶
`rnd =` empirical_rnd `(data, r, c, …)` ¶
`rnd =` empirical_rnd `(data, [sz])` ¶

  Return a matrix of random samples from the empirical distribution obtained from the univariate sample data.

  When called with a single size argument, return a square matrix with the dimension specified. When called with more than one scalar argument the first two arguments are taken as the number of rows and columns and any further arguments specify additional matrix dimensions. The size may also be specified with a vector of dimensions sz.

  If no size arguments are given then the result matrix is a random ordering of the sample data.