RAND Uniform Random Number Generator
Section: Random Number Generation
UsageCreates 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
double, a 64-bit floating
point array. To get arrays of other types, use the typecast
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.
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
or alternately, you can reset the random number generator with
ExampleThe following example demonstrates an example of using the first form of the
--> 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([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