first
This commit is contained in:
36
node_modules/core-js/modules/esnext.math.seeded-prng.js
generated
vendored
Normal file
36
node_modules/core-js/modules/esnext.math.seeded-prng.js
generated
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
'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 $TypeError(SEED_TYPE_ERROR);
|
||||
return new $SeededRandomGenerator(seed);
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user