| 123456789101112131415161718192021222324252627282930313233343536 | 
							- 'use strict';
 
- var $ = require('../internals/export');
 
- var anObject = require('../internals/an-object');
 
- var numberIsFinite = require('../internals/number-is-finite');
 
- var createIteratorConstructor = require('../internals/iterator-create-constructor');
 
- var createIterResultObject = require('../internals/create-iter-result-object');
 
- var InternalStateModule = require('../internals/internal-state');
 
- var SEEDED_RANDOM = 'Seeded Random';
 
- var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator';
 
- var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.';
 
- var setInternalState = InternalStateModule.set;
 
- var getInternalState = InternalStateModule.getterFor(SEEDED_RANDOM_GENERATOR);
 
- var $TypeError = TypeError;
 
- var $SeededRandomGenerator = createIteratorConstructor(function SeededRandomGenerator(seed) {
 
-   setInternalState(this, {
 
-     type: SEEDED_RANDOM_GENERATOR,
 
-     seed: seed % 2147483647
 
-   });
 
- }, SEEDED_RANDOM, function next() {
 
-   var state = getInternalState(this);
 
-   var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647;
 
-   return createIterResultObject((seed & 1073741823) / 1073741823, false);
 
- });
 
- // `Math.seededPRNG` method
 
- // https://github.com/tc39/proposal-seeded-random
 
- // based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html
 
- $({ target: 'Math', stat: true, forced: true }, {
 
-   seededPRNG: function seededPRNG(it) {
 
-     var seed = anObject(it).seed;
 
-     if (!numberIsFinite(seed)) throw new $TypeError(SEED_TYPE_ERROR);
 
-     return new $SeededRandomGenerator(seed);
 
-   }
 
- });
 
 
  |