// Generated by purs version 0.13.6 "use strict"; var Data_EuclideanRing = require("../Data.EuclideanRing/index.js"); var Data_Int = require("../Data.Int/index.js"); var Data_Maybe = require("../Data.Maybe/index.js"); var $$Math = require("../Math/index.js"); var Seed = function (x) { return x; }; var unSeed = function (v) { return v; }; var seedMin = 1; var lcgM = 2147483647; var seedMax = lcgM - 1 | 0; var mkSeed = function (x) { var ensureBetween = function (min) { return function (max) { return function (n) { var rangeSize = max - min | 0; var n$prime = Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt)(n)(rangeSize); var $361 = n$prime < min; if ($361) { return n$prime + max | 0; }; return n$prime; }; }; }; return ensureBetween(seedMin)(seedMax)(x); }; var lcgC = 0; var lcgA = 48271; var lcgPerturb = function (d) { return function (v) { return Seed(Data_Maybe.fromJust()(Data_Int.fromNumber($$Math.remainder(Data_Int.toNumber(lcgA) * Data_Int.toNumber(v) + d)(Data_Int.toNumber(lcgM))))); }; }; var lcgNext = lcgPerturb(Data_Int.toNumber(lcgC)); module.exports = { mkSeed: mkSeed, unSeed: unSeed, lcgA: lcgA, lcgC: lcgC, lcgM: lcgM, lcgNext: lcgNext, lcgPerturb: lcgPerturb };