ternaryFactory
Create a factory function for generating pseudorandom values drawn from a ternary PRNG.
Usage
var ternaryFactory = require( '@stdlib/random/array/tools/ternary-factory' );
ternaryFactory( prng, dtypes, dtype )
Returns a factory function for generating pseudorandom values drawn from a ternary PRNG.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, 'float64' );
// returns <Function>
The function has the following parameters:
- prng: ternary pseudorandom number generator.
- dtypes: list of supported output data types.
- dtype: default output array data type.
factory( [param1, param2, param3, ][options] )
Returns a function for generating pseudorandom values drawn from a ternary PRNG.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
The function has the following parameters:
- param1: first PRNG parameter.
- param2: second PRNG parameter.
- param3: third PRNG parameter.
- options: function options.
The function supports the following options:
- prng: pseudorandom number generator which generates uniformly distributed pseudorandom numbers.
- seed: pseudorandom value generator seed.
- state: pseudorandom value generator state.
- copy: boolean indicating whether to copy a provided pseudorandom value generator state.
- dtype: default output array data type. Setting this option overrides the default output array data type provided to the parent function.
If provided PRNG parameters, the function returns a partially applied function for creating arrays, which can be useful when wanting to pass around a parameterized function for array creation.
Full Arity
random( len, param1, param2, param3[, options] )
Returns an array of pseudorandom values drawn from a ternary PRNG.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var v = random( 10, 2.0, 5.0, 3.33 );
// returns <Float64Array>
The function has the following parameters:
- len: output array length.
- param1: first PRNG parameter.
- param2: second PRNG parameter.
- param3: third PRNG parameter.
- options: function options.
The function accepts the following options:
- dtype: output array data type. Setting this option overrides the default output array data type.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var v = random( 10, 2.0, 5.0, 3.33, {
'dtype': 'float32'
});
// returns <Float32Array>
random.assign( param1, param2, param3, out )
Fills an array with pseudorandom values drawn from a ternary PRNG.
var triangular = require( '@stdlib/random/base/triangular' );
var zeros = require( '@stdlib/array/zeros' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var out = zeros( 10, 'float64' );
// returns <Float64Array>
var v = random.assign( 2.0, 5.0, 3.33, out );
// returns <Float64Array>
var bool = ( out === v );
// returns true
The method has the following parameters:
- param1: first PRNG parameter.
- param2: second PRNG parameter.
- param3: third PRNG parameter.
- out: output array.
Partial Application
random( len[, options] )
Returns an array of pseudorandom values drawn from a ternary PRNG.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory( 2.0, 5.0, 3.33 );
// returns <Function>
var v = random( 10 );
// returns <Float64Array>
v = random( 10 );
// returns <Float64Array>
The function has the following parameters:
- len: output array length.
- options: function options.
The function accepts the following options:
- dtype: output array data type. Setting this option overrides the default output array data type.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory( 2.0, 5.0, 3.33 );
// returns <Function>
var v = random( 10, {
'dtype': 'float32'
});
// returns <Float32Array>
v = random( 10, {
'dtype': 'generic'
});
// returns [...]
random.assign( out )
Fills an array with pseudorandom values drawn from a ternary PRNG.
var triangular = require( '@stdlib/random/base/triangular' );
var zeros = require( '@stdlib/array/zeros' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory( 2.0, 5.0, 3.33 );
// returns <Function>
var out = zeros( 10, 'float64' );
// returns <Float64Array>
var v = random.assign( out );
// returns <Float64Array>
var bool = ( out === v );
// returns true
The method has the following parameters:
- out: output array.
random.PRNG
The underlying pseudorandom number generator.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var prng = random.PRNG;
// returns <Function>
random.seed
The value used to seed the underlying pseudorandom number generator.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var seed = random.seed;
// returns <Uint32Array>
If the factory
function is provided a PRNG for uniformly distributed numbers, the associated property value on the returned function is null
.
var minstd = require( '@stdlib/random/base/minstd-shuffle' ).normalized;
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory({
'prng': minstd
});
// returns <Function>
var seed = random.seed;
// returns null
random.seedLength
Length of underlying pseudorandom number generator seed.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var len = random.seedLength;
// returns <number>
If the factory
function is provided a PRNG for uniformly distributed numbers, the associated property value on the returned function is null
.
var minstd = require( '@stdlib/random/base/minstd-shuffle' ).normalized;
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory({
'prng': minstd
});
// returns <Function>
var len = random.seedLength;
// returns null
random.state
Writable property for getting and setting the underlying pseudorandom number generator state.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var state = random.state;
// returns <Uint32Array>
If the factory
function is provided a PRNG for uniformly distributed numbers, the associated property value on the returned function is null
.
var minstd = require( '@stdlib/random/base/minstd-shuffle' ).normalized;
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory({
'prng': minstd
});
// returns <Function>
var state = random.state;
// returns null
random.stateLength
Length of underlying pseudorandom number generator state.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var len = random.stateLength;
// returns <number>
If the factory
function is provided a PRNG for uniformly distributed numbers, the associated property value on the returned function is null
.
var minstd = require( '@stdlib/random/base/minstd-shuffle' ).normalized;
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory({
'prng': minstd
});
// returns <Function>
var len = random.stateLength;
// returns null
random.byteLength
Size (in bytes) of underlying pseudorandom number generator state.
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory();
// returns <Function>
var sz = random.byteLength;
// returns <number>
If the factory
function is provided a PRNG for uniformly distributed numbers, the associated property value on the returned function is null
.
var minstd = require( '@stdlib/random/base/minstd-shuffle' ).normalized;
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = [ 'float64', 'float32', 'generic' ];
var factory = ternaryFactory( triangular, dtypes, dtypes[ 0 ] );
// returns <Function>
var random = factory({
'prng': minstd
});
// returns <Function>
var sz = random.byteLength;
// returns null
Examples
var triangular = require( '@stdlib/random/base/triangular' );
var dtypes = require( '@stdlib/array/dtypes' );
var ternaryFactory = require( '@stdlib/random/array/tools/ternary-factory' );
var dt = dtypes( 'real_floating_point_and_generic' );
var factory = ternaryFactory( triangular, dt, 'float64' );
// returns <Function>
var random = factory();
// returns <Function>
var x = random( 10, 2.0, 5.0, 3.33 );
// returns <Float64Array>
x = random( 10, 2.0, 5.0, 3.33, {
'dtype': 'float32'
});
// returns <Float32Array>
x = random( 10, 2.0, 5.0, 3.33, {
'dtype': 'generic'
});
// returns [...]