fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Pseudorandom Numbers, Seeds, and Reproducibility

Install and import#

bash
npm install fintech-algorithms
ts
import { pseudorandomNumbersSeedsAndReproducibility } from "fintech-algorithms/foundations/statistical-computing-and-reproducibility/pseudorandom-numbers-seeds-and-reproducibility";

Signature#

pseudorandomNumbersSeedsAndReproducibility(input)

Draws a run of unit-interval numbers from a seeded linear congruential generator, so the same seed always replays the same stream.

Parameters#

NameTypeNotes
inputD00InputReads seed, the 32-bit starting state, and sampleCount, how many draws to take. A non-empty values list of finite numbers must also be present; it is validated but not used here.

Returns#

D00Output

samples holds the draws, each in the half-open interval from zero to one, seed is echoed back, finalState is the generator state left after the last draw, and reproducible is always true.

Errors#

  • When values is absent, empty, or holds a non-finite number — throws RangeError
  • When sampleCount is below one — throws RangeError

Complexity: time O(n), space O(n).

Worked example#

verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.

Input#

input
{
  "values": [1, 2, 3, 4, 5],
  "floatingValue": 0.1,
  "maxSafeMagnitude": 1.7976931348623157e+308,
  "window": 3,
  "rawValues": [1, null, 2, "bad", 3],
  "invalidPolicy": "drop-and-report",
  "seed": 42,
  "sampleCount": 5,
  "leftVector": [
    {
      "index": "A",
      "value": 1
    },
    {
      "index": "B",
      "value": 2
    }
  ],
  "rightVector": [
    {
      "index": "B",
      "value": 20
    },
    {
      "index": "C",
      "value": 30
    }
  ],
  "train": [10, 12, 14, 16],
  "test": [18, 20],
  "actual": [1, 2.0000001, 3],
  "expected": [1, 2, 3]
}

Showing 14 of 18 fields.

Call#

pseudorandomNumbersSeedsAndReproducibility(input)

Returns#

object with 2 fields: samples, seed

{
  "samples": [
    0.2523451747838408,
    0.08812504541128874,
    0.5772811982315034,
    0.22255426598712802,
    0.37566019711084664
  ],
  "seed": 42
}

Diagrams#

Pseudorandom Numbers, Seeds, and Reproducibility — article hero
Pseudorandom Numbers, Seeds, and Reproducibility — calculation ledger
Pseudorandom Numbers, Seeds, and Reproducibility — concept anatomy
Pseudorandom Numbers, Seeds, and Reproducibility — failure boundary
Pseudorandom Numbers, Seeds, and Reproducibility — method map
Pseudorandom Numbers, Seeds, and Reproducibility — scenario contrast

How it works#

This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.

Read the article →

References#

The rest of the Statistical Computing and Reproducibility family#