Languages
[Edit]
EN

JavaScript - own random number generator (custom implementation)

11 points
Created by:
Marcin
2477

In this article, we're going to have a look at how to write own random numbers genrator that is based on LCG (Linear congruential generator) algorithm in JavaScript.

1. Introduction

In JavaScript we can implement custom random number generator by using LCG (Linear congruential generator) algorithm. LCG is one of the oldest and best-known pseudorandom number generator algorithm. We can adjust this implementation to work on int or long.

Linear congruential generator is defined by recurrence relation:

Where:

  • Xn+1 - new seed
  • a -¬†MULTIPLIER_A
  • Xn¬†- current seed field
  • c -¬†INCREMENT_C
  • m -¬†MODULUS

2. Implementation

Note: every time randomInt() method is called, it is necessary to update seed value.

// ONLINE-RUNNER:browser;

function RandomUtil(seed) {
    var self = this;

    if (seed == null) {
        seed = 3819201;
    }

    var MULTIPLIER_A = 1103515245;
    var INCREMENT_C = 12345;
    var MODULUS = 2147483647; // max integer value

    self.randomInt = function() {
        seed = (seed * MULTIPLIER_A + INCREMENT_C) % MODULUS;
        return seed;
    };
}

// Usage example 1:

var util = new RandomUtil();

console.log(util.randomInt()); // 348328093
console.log(util.randomInt()); // 121065958
console.log(util.randomInt()); // 790325445

// Usage example 2:

var now = new Date();
var util = new RandomUtil(now.getTime());

// Values should be different always:
console.log(util.randomInt()); // 922892575
console.log(util.randomInt()); // 1117277734
console.log(util.randomInt()); // 2084933141
Hey ūüĎč
Would you like to know what we do?
  • Dirask is a friendly IT community for learners, professionals and hobbyists to share their knowledge and help each other in extraordinary easy way.
  • We welcome everyone,
    no matter what the experience,
    no matter how basic the question is,
    this community will help you.