## RAND Uniform Random Number Generator

Section: Random Number Generation

### Usage

Creates an array of pseudo-random numbers of the specified size. The numbers are uniformly distributed on`[0,1)`

.
Two seperate syntaxes are possible. The first syntax specifies the array
dimensions as a sequence of scalar dimensions:
y = rand(d1,d2,...,dn).

The resulting array has the given dimensions, and is filled with
random numbers. The type of `y`

is `double`

, a 64-bit floating
point array. To get arrays of other types, use the typecast
functions.
The second syntax specifies the array dimensions as a vector,
where each element in the vector specifies a dimension length:

y = rand([d1,d2,...,dn]).

This syntax is more convenient for calling `rand`

using a
variable for the argument.
Finally, `rand`

supports two additional forms that allow
you to manipulate the state of the random number generator.
The first retrieves the state

y = rand('state')

which is a 625 length integer vector. The second form sets the state

rand('state',y)

or alternately, you can reset the random number generator with

rand('state',0)

### Example

The following example demonstrates an example of using the first form of the`rand`

function.
--> rand(2,2,2) ans = (:,:,1) = 0.3478 0.5313 0.0276 0.9958 (:,:,2) = 0.2079 0.7597 0.4921 0.3365

The second example demonstrates the second form of the `rand`

function.

--> rand([2,2,2]) ans = (:,:,1) = 0.8670 0.2174 0.2714 0.6897 (:,:,2) = 0.2305 0.3898 0.1721 0.9545

The third example computes the mean and variance of a large number of uniform random numbers. Recall that the mean should be `1/2`

, and the variance should be `1/12 ~ 0.083`

.

--> x = rand(1,10000); --> mean(x) ans = 0.5023 --> var(x) ans = 0.0840

Now, we use the state manipulation functions of `rand`

to exactly reproduce
a random sequence. Note that unlike using `seed`

, we can exactly control where
the random number generator starts by saving the state.

--> rand('state',0) % restores us to startup conditions --> a = rand(1,3) % random sequence 1 a = 0.3759 0.0183 0.9134 --> b = rand('state'); % capture the state vector --> c = rand(1,3) % random sequence 2 c = 0.3580 0.7604 0.8077 --> rand('state',b); % restart the random generator so... --> c = rand(1,3) % we get random sequence 2 again c = 0.3580 0.7604 0.8077