Usage
var frechet = require( '@stdlib/random-base-frechet' );
frechet( alpha, s, m )
Returns a pseudorandom number drawn from a Fréchet distribution with parameters alpha
(shape), s
(scale), and m
(location).
var r = frechet( 2.0, 5.0, 3.33 );
If either alpha
, s
, or m
is NaN
, the function returns NaN
.
var r = frechet( NaN, 1.0, 0.5 );
r = frechet( 1.0, NaN, 2.42 );
r = frechet( 7.0, 10.0, NaN );
If provided alpha <= 0
, the function returns NaN
.
var y = frechet( 0.0, 3.0, 2.0 );
y = frechet( -1.0, 2.0, 2.0 );
If provided s <= 0
, the function returns NaN
.
var y = frechet( 1.0, 0.0, 2.0 );
y = frechet( 1.0, -1.0, 2.0 );
frechet.factory( [alpha, s, m, ][options] )
Returns a pseudorandom number generator (PRNG) for generating pseudorandom numbers drawn from a Fréchet distribution.
var rand = frechet.factory();
var r = rand( 2.0, 1.0, 0.5 );
If provided alpha
, s
, and m
, the returned generator returns random variates from the specified distribution.
var rand = frechet.factory( 2.0, 2.0, 1.0 );
var r = rand();
r = rand();
If not provided alpha
, s
, and m
, the returned generator requires that all three parameters be provided at each invocation.
var rand = frechet.factory();
var r = rand( 4.0, 1.0, 0.75 );
r = rand( 2.0, 8.0, 0.1 );
The function accepts the following options
:
- prng: pseudorandom number generator for generating uniformly distributed pseudorandom numbers on the interval
[0,1)
. If provided, the function ignores both the state
and seed
options. In order to seed the returned pseudorandom number generator, one must seed the provided prng
(assuming the provided prng
is seedable). - seed: pseudorandom number generator seed.
- state: a
Uint32Array
containing pseudorandom number generator state. If provided, the function ignores the seed
option. - copy:
boolean
indicating whether to copy a provided pseudorandom number generator state. Setting this option to false
allows sharing state between two or more pseudorandom number generators. Setting this option to true
ensures that a returned generator has exclusive control over its internal state. Default: true
.
To use a custom PRNG as the underlying source of uniformly distributed pseudorandom numbers, set the prng
option.
var minstd = require( '@stdlib/random-base-minstd' );
var rand = frechet.factory({
'prng': minstd.normalized
});
var r = rand( 2.0, 4.0, 3.0 );
To seed a pseudorandom number generator, set the seed
option.
var rand1 = frechet.factory({
'seed': 12345
});
var r1 = rand1( 2.0, 4.0, 3.0 );
var rand2 = frechet.factory( 2.0, 4.0, 3.0, {
'seed': 12345
});
var r2 = rand2();
var bool = ( r1 === r2 );
To return a generator having a specific initial state, set the generator state
option.
var rand;
var bool;
var r;
var i;
for ( i = 0; i < 1000; i++ ) {
r = frechet( 2.0, 2.0, 1.0 );
}
rand = frechet.factory({
'state': frechet.state
});
bool = ( rand( 2.0, 2.0, 1.0 ) === frechet( 2.0, 2.0, 1.0 ) );
frechet.NAME
The generator name.
var str = frechet.NAME;
frechet.PRNG
The underlying pseudorandom number generator.
var prng = frechet.PRNG;
frechet.seed
The value used to seed frechet()
.
var rand;
var r;
var i;
for ( i = 0; i < 100; i++ ) {
r = frechet( 4.0, 10.0, 3.0 );
}
rand = frechet.factory( 4.0, 10.0, 3.0, {
'seed': frechet.seed
});
for ( i = 0; i < 100; i++ ) {
r = rand();
}
If provided a PRNG for uniformly distributed numbers, this value is null
.
var rand = frechet.factory({
'prng': Math.random
});
var seed = rand.seed;
frechet.seedLength
Length of generator seed.
var len = frechet.seedLength;
If provided a PRNG for uniformly distributed numbers, this value is null
.
var rand = frechet.factory({
'prng': Math.random
});
var len = rand.seedLength;
frechet.state
Writable property for getting and setting the generator state.
var r = frechet( 2.0, 2.0, 1.0 );
r = frechet( 2.0, 2.0, 1.0 );
var state = frechet.state;
r = frechet( 2.0, 2.0, 1.0 );
r = frechet( 2.0, 2.0, 1.0 );
frechet.state = state;
r = frechet( 2.0, 2.0, 1.0 );
r = frechet( 2.0, 2.0, 1.0 );
If provided a PRNG for uniformly distributed numbers, this value is null
.
var rand = frechet.factory({
'prng': Math.random
});
var state = rand.state;
frechet.stateLength
Length of generator state.
var len = frechet.stateLength;
If provided a PRNG for uniformly distributed numbers, this value is null
.
var rand = frechet.factory({
'prng': Math.random
});
var len = rand.stateLength;
frechet.byteLength
Size (in bytes) of generator state.
var sz = frechet.byteLength;
If provided a PRNG for uniformly distributed numbers, this value is null
.
var rand = frechet.factory({
'prng': Math.random
});
var sz = rand.byteLength;
frechet.toJSON()
Serializes the pseudorandom number generator as a JSON object.
var o = frechet.toJSON();
If provided a PRNG for uniformly distributed numbers, this method returns null
.
var rand = frechet.factory({
'prng': Math.random
});
var o = rand.toJSON();