# randsrc

Generate random matrix using prescribed alphabet

## Syntax

`out = randsrcout = randsrc(m)out = randsrc(m,n)out = randsrc(m,n,alphabet)out = randsrc(m,n,[alphabet; prob])out = randsrc(m,n,...,state);out = randsrc(m,n,...,s);`

## Description

`out = randsrc` generates a random scalar that is either -1 or 1, with equal probability.

`out = randsrc(m)` generates an `m`-by-`m` matrix, each of whose entries independently takes the value -1 with probability 1/2, and 1 with probability 1/2.

`out = randsrc(m,n)` generates an `m`-by-`n` matrix, each of whose entries independently takes the value -1 with probability 1/2, and 1 with probability 1/2.

`out = randsrc(m,n,alphabet)` generates an `m`-by-`n` matrix, each of whose entries is independently chosen from the entries in the row vector `alphabet`. Each entry in `alphabet` occurs in `out` with equal probability. Duplicate values in `alphabet` are ignored.

`out = randsrc(m,n,[alphabet; prob])` generates an `m`-by-`n` matrix, each of whose entries is independently chosen from the entries in the row vector `alphabet`. Duplicate values in `alphabet` are ignored. The row vector `prob` lists corresponding probabilities, so that the symbol `alphabet(k)` occurs with probability `prob(k)`, where `k` is any integer between one and the number of columns of `alphabet`. The elements of `prob` must add up to 1.

`out = randsrc(m,n,...,state);` is the same as the two preceding syntaxes, except that it first resets the state of the uniform random number generator `rand` to the integer `state`.

 Note:   This usage is deprecated and may be removed in a future release. Instead of `state`, use `s`, as in the following example.

This function uses, by default, the Mersenne Twister algorithm by Nishimura and Matsumoto.

 Note:   Using the `state` parameter causes this function to switch random generators to use the `'state'` algorithm of the `rand` function.See `rand` for details on the generator algorithm.

`out = randsrc(m,n,...,s);` causes rand to use the random stream s. See RandStream for more details.

## Examples

To generate a 10-by-10 matrix whose elements are uniformly distributed among members of the set {-3,-1,1,3}, you can use either of these commands.

`out = randsrc(10,10,[-3 -1 1 3]);`
`out = randsrc(10,10,[-3 -1 1 3; .25 .25 .25 .25]);`

To skew the probability distribution so that -1 and 1 each occur with probability .3, while -3 and 3 each occur with probability .2, use this command.

`out = randsrc(10,10,[-3 -1 1 3; .2 .3 .3 .2]);`