# Reference:Rand.inc

A collection of macros for generating random numbers, as well as 4 predefined random number streams: `RdmA, RdmB, RdmC,`

and `RdmD`

. There are macros for creating random numbers in a flat distribution (all numbers equally likely) in various ranges, and a variety of other distributions.

## Flat Distributions

`SRand(Stream)`

: *Signed rand()*, returns random numbers in the range [-1, 1].

Parameters:

`Stream`

= Random number stream.

`RRand(Min, Max, Stream)`

: Returns random numbers in the range [Min, Max].

Parameters:

`Min`

= The lower end of the output range.`Max`

= The upper end of the output range.`Stream`

= Random number stream.

`VRand(Stream)`

: Returns random vectors in a box from < 0, 0, 0> to < 1, 1, 1>

Parameters:

`Stream`

= Random number stream.

`VRand_In_Box(PtA, PtB, Stream)`

: Like VRand(), this macro returns a random vector in a box, but this version lets you specify the two corners of the box.

Parameters:

`PtA`

= Lower-left-bottom corner of box.`PtB`

= Upper-right-top corner of box.`Stream`

= Random number stream.

`VRand_In_Sphere(Stream)`

: Returns a random vector in a unit-radius sphere located at the origin.

Parameters:

`Stream`

= Random number stream.

`VRand_On_Sphere(Stream)`

: Returns a random vector on the surface of a unit-radius sphere located at the origin.

Parameters:

`Stream`

= Random number stream.

`VRand_In_Obj(Object, Stream)`

: This macro takes a solid object and returns a random point that is inside it. It does this by randomly sampling the bounding box of the object, and can be quite slow if the object occupies a small percentage of the volume of its bounding box (because it will take more attempts to find a point inside the object). This macro is best used on finite, solid objects (non-solid objects, such as meshes and bezier patches, do not have a defined *inside*, and will not work).

Parameters:

`Object`

= The object the macro chooses the points from.`Stream`

= Random number stream.

## Other Distributions

### Continuous Symmetric Distributions

`Rand_Cauchy(Mu, Sigma, Stream)`

: Cauchy distribution.

Parameters:

`Mu`

= Mean.`Sigma`

= Standard deviation.`Stream`

= Random number stream.

`Rand_Student(N, Stream)`

: Student's distribution.

Parameters:

`N`

= degrees of freedom.`Stream`

= Random number stream.

`Rand_Normal(Mu, Sigma, Stream)`

: Normal distribution.

Parameters:

`Mu`

= Mean.`Sigma`

= Standard deviation.`Stream`

= Random number stream.

`Rand_Gauss(Mu, Sigma, Stream)`

: Gaussian distribution. Like Rand_Normal(), but a bit faster.

Parameters:

`Mu`

= Mean.`Sigma`

= Standard deviation.`Stream`

= Random number stream.

### Continuous Skewed Distributions

`Rand_Spline(Spline, Stream)`

: This macro takes a spline describing the desired distribution. The T value of the spline is the output value, and the .y value its chance of occuring.

Parameters:

`Spline`

= A spline determining the distribution.`Stream`

= Random number stream.

`Rand_Gamma(Alpha, Beta, Stream)`

: Gamma distribution.

Parameters:

`Alpha`

= Shape parameter > 0.`Beta`

= Scale parameter > 0.`Stream`

= Random number stream.

`Rand_Beta(Alpha, Beta, Stream)`

: Beta variate.

Parameters:

`Alpha`

= Shape Gamma1.`Beta`

= Scale Gamma2.`Stream`

= Random number stream.

`Rand_Chi_Square(N, Stream)`

: Chi Square random variate.

Parameters:

`N`

= Degrees of freedom (integer).`Stream`

= Random number stream.

`Rand_F_Dist(N, M, Stream)`

: F-distribution.

Parameters:

`N, M`

= Degrees of freedom.`Stream`

= Random number stream.

`Rand_Tri(Min, Max, Mode, Stream)`

: Triangular distribution

Parameters:

`Min, Max, Mode`

: Min < Mode < Max.`Stream`

= Random number stream.

`Rand_Erlang(Mu, K, Stream)`

: Erlang variate.

Parameters:

`Mu`

= Mean >= 0.`K`

= Number of exponential samples.`Stream`

= Random number stream.

`Rand_Exp(Lambda, Stream)`

: Exponential distribution.

Parameters:

`Lambda`

= rate = 1/mean.`Stream`

= Random number stream.

`Rand_Lognormal(Mu, Sigma, Stream)`

: Lognormal distribution.

Parameters:

`Mu`

= Mean.`Sigma`

= Standard deviation.`Stream`

= Random number stream.

`Rand_Pareto(Alpha, Stream)`

: Pareto distribution.

Parameters:

`Alpha`

= ?`Stream`

= Random number stream.

`Rand_Weibull(Alpha, Beta, Stream)`

: Weibull distribution.

Parameters:

`Alpha`

= ?`Beta`

= ?`Stream`

= Random number stream.

### Discrete Distributions

`Rand_Bernoulli(P, Stream)`

and `Prob(P, Stream)`

: Bernoulli distribution. Output is true with probability equal to the value of P and false with a probability of 1 - P.

Parameters:

`P`

= probability range (0-1).`Stream`

= Random number stream.

`Rand_Binomial(N, P, Stream)`

: Binomial distribution.

Parameters:

`N`

= Number of trials.`P`

= Probability (0-1)`Stream`

= Random number stream.

`Rand_Geo(P, Stream)`

: Geometric distribution.

Parameters:

`P`

= Probability (0-1).`Stream`

= Random number stream.

`Rand_Poisson(Mu, Stream)`

: Poisson distribution.

Parameters:

`Mu`

= Mean.`Stream`

= Random number stream.