rndRayleigh#

Purpose#

Computes rayleigh pseudo-random numbers with the choice of underlying random number generator.

Format#

x = rndRayleigh(r, c, sigma)#
{ x, newstate } = rndRayleigh(r, c, sigma, state)
Parameters:
• r (scalar) – number of rows of resulting matrix.

• c (scalar) – number of columns of resulting matrix.

• sigma (scalar or matrix) – scale parameter, ExE conformable with ‘r’ and ‘c’.

• state (scalar or opaque vector) –

Optional argument.

scalar case

state = starting seed value only. If -1, GAUSS computes the starting seed based on the system clock.

opaque vector case

state = the state vector returned from a previous call to one of the rnd random number functions.

Returns:
• x (RxC matrix) – Rayleigh distributed random numbers.

• newstate (Opaque vector) – the updated state.

Examples#

Basic example#

// Set rndseed for repeatable random numbers
rndseed 4323;

// Create a 3x1 column vector of Rayleigh distributed
// random deviates with sigma equal to 2
x = rndRayleigh(3, 1, 2);


After the above code, ‘x’ should be equal to:

0.28950290
1.9994478
5.089132


Columns with different sigma values#

// Set rndseed for repeatable random numbers
rndseed 4323;

// Create a 3x2 column vector of Rayleigh distributed
// random deviates with sigma equal to 1 for the
// first column and equal to 3 for the second column
sigma = { 1 3 };
x = rndRayleigh(3, 2, sigma);


After the above code, ‘x’ should be equal to:

0.1447515        2.9991717
2.5445664        2.4191846
1.1406313        5.0636878


Using a state vector#

// Create a 3x1 column vector of Rayleigh distributed
// random deviates with sigma equal to 2
seed = 4323;
{ x1, state } = rndRayleigh(3, 1, 2, seed);

// Create 3 additional random deviates, using
// the state vector returned by the previous call
{ x2, state } = rndRayleigh(3, 1, 2, state);


After the above code, ‘x1’ and ‘x2’ should be equal to:

      0.28950290         1.6127897
x1 =  1.9994478    x2 =  2.2812626
5.0891327          3.3757919


Remarks#

The properties of the pseudo-random numbers in x are:

\begin{align}\begin{aligned}\begin{split}E(X) = \sigma\sqrt{\frac{\pi}{2}}\\\end{split}\\Var(X) = \sigma^2\frac{(4 - \pi)}{2}\end{aligned}\end{align}

r and c will be truncated to integers if necessary.

Technical Notes#

The default generator for rndRayleigh() is the SFMT Mersenne-Twister 19937. You can specify a different underlying random number generator with the function rndCreateState().