본문 바로가기
자바스크립트

[JAVASCRIPT] 랜덤 숫자(난수) 생성하는 방법 - Math.random()

by jaewooojung 2023. 12. 28.

JAVASCRIPT


난수 생성하기

자바스크립트에서 특정 범위 내에서 난수(무작위의 숫자)를 생성하는 방법에 대해서 살펴보겠습니다.

 

자바스크립트의 내장 객체 Math의 random() 메소드를 사용합니다.

Math.random();


0 이상 1 미만의 실수를 반환합니다.

 

 

예시

const getRandom = () => Math.random();
console.log(getRandom());
console.log(getRandom());
console.log(getRandom());
console.log(getRandom());
console.log(getRandom());

// 0.1042365462750956
// 0.3437076315867258
// 0.18289290463351882
// 0.9812315629104096
// 0.43594363340036235

getRandom 함수는 생성된 난수를 반환하는 함수입니다. 주석에서와 같이 0 이상 1 미만의 실수 중에 무작위로 값이 생성됩니다.

 

min이상 max미만의 실수 중에 무작위로 생성하기

const getRandom = (min, max) => Math.random() * (max - min) + min;
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));

// 4.316012132229984
// 7.456132504712491
// 2.6580729701707844
// 8.938877949131957
// 6.4930161549064795

1과 10을 인자로 전달해서 1 이상 10 미만의 난수를 생성했습니다.

 


참고) 범위를 정하는 식을 도출하면 다음과 같습니다.

 

1) 0 <= Math.random() < 1, 이건 정해진 룰입니다.

0 <= Math.random() < 1 0이상 1미만


2) 1)에서 모든 항에 max-min을 곱하면

0 <= Math.random()*(max - min) < max - min 0이상 max-min미만


3) 2)에서 모든 항에 min을 더하면

min <= Math.random()*(max - min) + min < max min이상 max미만

 

min이상 max미만의 정수(소수점 없는 수)를 생성할 때에는 Math.floor() 메소드를 활용할 수 있습니다.

Math.floor(x);

주어진 숫자 이하의 정수중에서 가장 큰 수를 반환합니다.

= 소수점을 날립니다.

 

위에서 만든 난수 생성식을 Math.floor()의 인자로 넣어주면 됩니다.

const getRandom = (min, max) => Math.floor(Math.random() * (max - min) + min);
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));
console.log(getRandom(1, 10));

// 3
// 1
// 8
// 9
// 4

 

음수(-)에서도 잘 작동합니다.

const getRandom = (min, max) => Math.floor(Math.random() * (max - min) + min);
console.log(getRandom(-10, -1));
console.log(getRandom(-10, -1));
console.log(getRandom(-10, -1));
console.log(getRandom(-10, -1));
console.log(getRandom(-10, -1));

// -5
// -10
// -2
// -5
// -3

 

 


MDN document - Math.random()

 

Math.random() - JavaScript | MDN

Math.random() 함수는 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있다. 난수 생성 알고리즘에 사용

developer.mozilla.org

MDN document - Math.floor()

 

Math.floor() - JavaScript | MDN

Math.floor() 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.

developer.mozilla.org

 



        
답변을 생성하고 있어요.