MINSTD Shuffle
Fill a strided array with pseudorandom numbers generated using a linear congruential pseudorandom number generator (LCG) whose output is shuffled.
Usage
var minstd = require( '@stdlib/random/strided/minstd-shuffle' );
minstd( N, out, so[, options] )
Fills a strided array with pseudorandom integers between 1
and 2147483646
.
var Float64Array = require( '@stdlib/array/float64' );
// Create an array:
var out = new Float64Array( 10 );
// Fill the array with pseudorandom numbers:
minstd( out.length, out, 1 );
The function has the following parameters:
- N: number of indexed elements.
- out: output array.
- so: index increment for
out
.
The N
and stride parameters determine which strided array elements are accessed at runtime. For example, to access every other value in out
,
var out = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
minstd( 3, out, 2 );
Note that indexing is relative to the first index. To introduce an offset, use typed array
views.
var Float64Array = require( '@stdlib/array/float64' );
// Initial array:
var out0 = new Float64Array( 6 );
// Create offset views:
var out1 = new Float64Array( out0.buffer, out0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
// Fill the output array:
minstd( out1.length, out1, 1 );
The function accepts the following options
:
- seed: pseudorandom number generator seed.
- state: an
Int32Array
containing pseudorandom number generator state. If provided, the function ignores theseed
option. - copy:
boolean
indicating whether to copy a provided pseudorandom number generator state. Setting this option tofalse
allows sharing state between two or more pseudorandom number generators. Setting this option totrue
ensures that a returned generator has exclusive control over its internal state. Default:true
.
To seed the underlying pseudorandom number generator, set the seed
option.
var Float64Array = require( '@stdlib/array/float64' );
var opts = {
'seed': 12345
};
var out = new Float64Array( 10 );
minstd( out.length, out, 1, opts );
minstd.ndarray( N, out, so, oo[, options] )
Fills a strided array with pseudorandom integers between 1
and 2147483646
using alternative indexing semantics.
var Float64Array = require( '@stdlib/array/float64' );
// Create an array:
var out = new Float64Array( 10 );
// Fill the array with pseudorandom numbers:
minstd.ndarray( out.length, out, 1, 0 );
The function has the following additional parameters:
- oo: starting index for
out
.
While typed array
views mandate a view offset based on the underlying buffer
, the offset parameters support indexing semantics based on starting indices. For example, to access every other value in out
starting from the second value,
var out = [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ];
minstd.ndarray( 3, out, 2, 1 );
The function accepts the same options
as documented above for minstd()
.
minstd.normalized( N, out, so[, options] )
Fills a strided array with pseudorandom numbers between 0
and 1
.
var Float64Array = require( '@stdlib/array/float64' );
// Create an array:
var out = new Float64Array( 10 );
// Fill the array with pseudorandom numbers:
minstd.normalized( out.length, out, 1 );
The function has the following parameters:
- N: number of indexed elements.
- out: output array.
- so: index increment for
out
.
The function accepts the same options
as documented above for minstd()
.
minstd.normalized.ndarray( N, out, so, oo[, options] )
Fills a strided array with pseudorandom numbers between 0
and 1
using alternative indexing semantics.
var Float64Array = require( '@stdlib/array/float64' );
// Create an array:
var out = new Float64Array( 10 );
// Fill the array with pseudorandom numbers:
minstd.normalized.ndarray( out.length, out, 1, 0 );
The function has the following additional parameters:
- oo: starting index for
out
.
The function accepts the same options
as documented above for minstd()
.
Notes
- If
N <= 0
, all functions leave the output array unchanged. - All functions support array-like objects having getter and setter accessors for array element access.
Examples
var zeros = require( '@stdlib/array/zeros' );
var zeroTo = require( '@stdlib/array/base/zero-to' );
var logEach = require( '@stdlib/console/log-each' );
var minstd = require( '@stdlib/random/strided/minstd-shuffle' );
// Specify a PRNG seed:
var opts = {
'seed': 1234
};
// Create an array:
var x1 = zeros( 10, 'float64' );
// Create a list of indices:
var idx = zeroTo( x1.length );
// Fill the array with pseudorandom numbers:
minstd.normalized( x1.length, x1, 1, opts );
// Create a second array:
var x2 = zeros( 10, 'generic' );
// Fill the array with the same pseudorandom numbers:
minstd.normalized( x2.length, x2, 1, opts );
// Print the array contents:
logEach( 'x1[%d] = %.2f; x2[%d] = %.2f', idx, x1, idx, x2 );