|
23 | 23 | var setReadOnly = require( '@stdlib/utils/define-read-only-property' );
|
24 | 24 | var setReadOnlyAccessor = require( '@stdlib/utils/define-read-only-accessor' );
|
25 | 25 | var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' );
|
| 26 | +var setNonEnumerableReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' ); |
26 | 27 | var isObject = require( '@stdlib/assert/is-plain-object' );
|
27 | 28 | var randu = require( '@stdlib/random/base/mt19937' ).factory;
|
28 | 29 | var isNonNegativeInteger = require( '@stdlib/math/base/assert/is-nonnegative-integer' );
|
29 | 30 | var PINF = require( '@stdlib/constants/math/float64-pinf' );
|
| 31 | +var typedarray2json = require( '@stdlib/array/to-json' ); |
30 | 32 | var validate = require( './validate.js' );
|
31 | 33 | var hypergeometric0 = require( './hypergeometric.js' );
|
32 | 34 |
|
@@ -115,6 +117,7 @@ function factory() {
|
115 | 117 | setReadWriteAccessor( prng, 'state', getState, setState );
|
116 | 118 | setReadOnlyAccessor( prng, 'stateLength', getStateLength );
|
117 | 119 | setReadOnlyAccessor( prng, 'byteLength', getStateSize );
|
| 120 | + setNonEnumerableReadOnly( prng, 'toJSON', toJSON ); |
118 | 121 | setReadOnly( prng, 'PRNG', rand );
|
119 | 122 |
|
120 | 123 | rand = rand.normalized;
|
@@ -183,6 +186,24 @@ function factory() {
|
183 | 186 | rand.state = s;
|
184 | 187 | }
|
185 | 188 |
|
| 189 | + /** |
| 190 | + * Serializes the pseudorandom number generator as a JSON object. |
| 191 | + * |
| 192 | + * ## Notes |
| 193 | + * |
| 194 | + * - `JSON.stringify()` implicitly calls this method when stringifying a PRNG. |
| 195 | + * |
| 196 | + * @private |
| 197 | + * @returns {Object} JSON representation |
| 198 | + */ |
| 199 | + function toJSON() { |
| 200 | + var out = {}; |
| 201 | + out.type = 'PRNG'; |
| 202 | + out.name = prng.NAME; |
| 203 | + out.state = typedarray2json( rand.state ); |
| 204 | + return out; |
| 205 | + } |
| 206 | + |
186 | 207 | /**
|
187 | 208 | * Returns a random number drawn from a hypergeometric distribution with bound parameters.
|
188 | 209 | *
|
|
0 commit comments