petrhurtak.com site logopetrhurtak.com

Random numbers in JavaScript

In JavaScript, most common way to get pseudo random values is from the Math.random() standard library function.

  • Returns 64bit float between 0 (inclusive) and 1 (exclusive).
  • Not cryptographically secure.
  • Available both in the browser and in the server environment.
> Math.random()
0.5392704424754013

In case you would want a random number in a certain range, there is no standard library function for that. So you either need to do the range transformations by yourself or use some package/library.

Random integer in range

/**
 * Get random integer in given rangee.
 * @param {int} min - Random number lower boundary (inclusive).
 * @param {int} max - Random number upper boundary (inclusive).
 * @return {int} Random integer.
 */
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

If you want to read more about how this range transformation works, I recommend this helpful Stack Overflow answer.

Random float in range

/**
 * Get random float in given range.
 * @param {number} min - Random number lower boundary (inclusive).
 * @param {number} max - Random number upper boundary (exclusive).
 * @return {number} Random number.
 */
function getRandomFloat(min, max) {
  return Math.random() * (max - min) + min;
}

Cryptographically secure numbers