Sha256: 221794918b6197d80a7797bd15d65ecfc2907412a51d44944c60dbbe6b4138c1

Contents?: true

Size: 1.44 KB

Versions: 36

Compression:

Stored size: 1.44 KB

Contents

var $ = require('../internals/export');
var anObject = require('../internals/an-object');
var numberIsFinite = require('../internals/number-is-finite');
var createIteratorConstructor = require('../internals/create-iterator-constructor');
var InternalStateModule = require('../internals/internal-state');

var SEEDED_RANDOM = 'Seeded Random';
var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(SEEDED_RANDOM_GENERATOR);
var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.';

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 { value: (seed & 1073741823) / 1073741823, done: 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 TypeError(SEED_TYPE_ERROR);
    return new $SeededRandomGenerator(seed);
  }
});

Version data entries

36 entries across 35 versions & 9 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.18.0 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.18.2 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.16.1 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.15.2 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.18.4 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.18.1 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.14.0 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
tang-0.2.1 spec/tang_app/node_modules/core-js/modules/esnext.math.seeded-prng.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/core-js/modules/esnext.math.seeded-prng.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/core-js/modules/esnext.math.seeded-prng.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/core-js/modules/esnext.math.seeded-prng.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/core-js/modules/esnext.math.seeded-prng.js
tang-0.2.0 spec/tang_app/node_modules/core-js/modules/esnext.math.seeded-prng.js
tang-0.1.0 spec/tang_app/node_modules/core-js/modules/esnext.math.seeded-prng.js
tang-0.0.9 spec/tang_app/node_modules/core-js/modules/esnext.math.seeded-prng.js
enju_library-0.3.8 spec/dummy/node_modules/core-js/modules/esnext.math.seeded-prng.js
condenser-0.3 lib/condenser/processors/node_modules/core-js-pure/modules/esnext.math.seeded-prng.js