Math.random()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Math.random() 정적 메서드는 0보다 크거나 1보다 작은 부동 소수점 의사 난수를 반환하며, 해당 범위에서 거의 균일한 분포를 가지므로 원하는 범위로 확장할 수 있습니다. 구현체는 난수 생성 알고리즘의 초기 시드를 선택하며, 사용자가 선택하거나 재설정할 수 없습니다.

참고: Math.random()은 암호학적으로 안전한 난수를 제공하지 않습니다. 보안과 관련된 용도로 사용하지 마세요. 대신 Web Crypto API, 더 정확하게는 window.crypto.getRandomValues() 메서드를 사용하시기 바랍니다.

시도해보기

문법

js
Math.random()

매개변수

없음.

반환 값

0 이상 1 미만의 부동소숫점 의사 난수.

예제

JavaScript의 숫자(number)는 가까운 짝수로 반올림되는(round-to-nearest-even behavior) IEEE 754 부동 소수점 숫자이므로, 아래 함수(Math.random() 자체의 범위 제외)에 대해 명시된 범위는 정확하지 않습니다. 매우 큰 범위를 선택하면 극히 드물게 일반적으로 제외되는 최대값에 도달할 수 있습니다.

0 이상 1 미만의 난수 생성하기

js
function getRandom() {
  return Math.random();
}

두 값 사이의 난수 생성하기

이 예제는 지정된 값 사이의 임의의 정수를 반환합니다. 이 값은 min(또는 min이 정수가 아닌 경우 min보다 큰 다음 정수) 보다 작고 max보다 작지만 같지 않은 값입니다.

js
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

두 값 사이의 정수 난수 생성하기

이 예제는 주어진 두 값 사이의 정수인 난수를 생성합니다. 반환값은 min(단, min이 정수가 아니면 min보다 큰 최소의 정수)보다 크거나 같으며, max보다 작습니다.

js
function getRandomInt(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled) + minCeiled); // 최댓값은 제외, 최솟값은 포함
}

참고 : 이 예제에서 Math.round()를 사용하고 싶을 수 있지만, 이렇게 하면 난수가 고르게 분포하지 않게 되므로 필요에 맞지 않을 수 있습니다.

두 수를 포함하는 두 수 사이의 정수 난수 생성하기

위의 getRandomInt() 함수는 최솟값을 포함하지만, 최댓값은 포함하지 않습니다. 최솟값과 최댓값을 모두 포함하는 결과가 필요할 경우, 아래의 getRandomIntInclusive() 함수를 사용할 수 있습니다.

js
function getRandomIntInclusive(min, max) {
  const minCeiled = Math.ceil(min);
  const maxFloored = Math.floor(max);
  return Math.floor(Math.random() * (maxFloored - minCeiled + 1) + minCeiled); // 최댓값도 포함, 최솟값도 포함
}

명세서

Specification
ECMAScript Language Specification
# sec-math.random

브라우저 호환성

BCD tables only load in the browser

같이 보기