Skip to content

Commit cb153da

Browse files
committed
Add support for additional properties and document options
1 parent 57a9aab commit cb153da

File tree

1 file changed

+55
-12
lines changed
  • lib/node_modules/@stdlib/random/base/betaprime/lib

1 file changed

+55
-12
lines changed

lib/node_modules/@stdlib/random/base/betaprime/lib/factory.js

+55-12
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020

2121
// MODULES //
2222

23-
var defineProperty = require( '@stdlib/utils/define-property' );
2423
var setReadOnly = require( '@stdlib/utils/define-read-only-property' );
24+
var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' );
25+
var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' );
2526
var isObject = require( '@stdlib/assert/is-plain-object' );
2627
var gammaFactory = require( '@stdlib/random/base/gamma' ).factory;
2728
var isnan = require( '@stdlib/math/base/assert/is-nan' );
@@ -37,10 +38,14 @@ var betaprime0 = require( './betaprime.js' );
3738
* @param {PositiveNumber} [alpha] - first shape parameter
3839
* @param {PositiveNumber} [beta] - second shape parameter
3940
* @param {Options} [options] - function options
40-
* @param {*} [options.seed] - pseudorandom number generator seed
41+
* @param {(uinteger32|Collection<uinteger32>)} [options.seed] - pseudorandom number generator seed
42+
* @param {Uint32Array} [options.state] - pseudorandom number generator state
43+
* @param {boolean} [options.copy=true] - boolean indicating whether to copy a provided pseudorandom number generator state
4144
* @throws {TypeError} `alpha` must be a positive number
4245
* @throws {TypeError} `beta` must be a positive number
43-
* @throws {TypeError} `options` must be an object
46+
* @throws {TypeError} options argument must be an object
47+
* @throws {TypeError} must provide valid options
48+
* @throws {Error} must provide a valid state
4449
* @returns {Function} pseudorandom number generator
4550
*
4651
* @example
@@ -94,19 +99,55 @@ function factory() {
9499
prng = betaprime1;
95100
}
96101
setReadOnly( prng, 'NAME', 'betaprime' );
97-
setReadOnly( prng, 'seed', rand.seed );
98-
defineProperty( prng, 'state', {
99-
'configurable': false,
100-
'enumerable': true,
101-
'get': getState,
102-
'set': setState
103-
});
104-
setReadOnly( prng, 'stateLength', rand.stateLength );
105-
setReadOnly( prng, 'byteLength', rand.byteLength );
102+
setReadOnlyAccessor( prng, 'seed', getSeed );
103+
setReadOnlyAccessor( prng, 'seedLength', getSeedLength );
104+
setReadWriteAccessor( prng, 'state', getState, setState );
105+
setReadOnlyAccessor( prng, 'stateLength', getStateLength );
106+
setReadOnlyAccessor( prng, 'byteLength', getStateSize );
106107
setReadOnly( prng, 'PRNG', rand );
107108

108109
return prng;
109110

111+
/**
112+
* Returns the PRNG seed.
113+
*
114+
* @private
115+
* @returns {Uint32Array} seed
116+
*/
117+
function getSeed() {
118+
return rand.seed;
119+
}
120+
121+
/**
122+
* Returns the PRNG seed length.
123+
*
124+
* @private
125+
* @returns {PositiveInteger} seed length
126+
*/
127+
function getSeedLength() {
128+
return rand.seedLength;
129+
}
130+
131+
/**
132+
* Returns the PRNG state length.
133+
*
134+
* @private
135+
* @returns {PositiveInteger} state length
136+
*/
137+
function getStateLength() {
138+
return rand.stateLength;
139+
}
140+
141+
/**
142+
* Returns the PRNG state size (in bytes).
143+
*
144+
* @private
145+
* @returns {PositiveInteger} state size (in bytes)
146+
*/
147+
function getStateSize() {
148+
return rand.byteLength;
149+
}
150+
110151
/**
111152
* Returns the current pseudorandom number generator state.
112153
*
@@ -122,6 +163,8 @@ function factory() {
122163
*
123164
* @private
124165
* @param {Uint32Array} s - generator state
166+
* @throws {TypeError} must provide a `Uint32Array`
167+
* @throws {Error} must provide a valid state
125168
*/
126169
function setState( s ) {
127170
rand.state = s;

0 commit comments

Comments
 (0)