개발 기록 남기기✍️

[JavaScript] Math.random() 으로 범위 내 랜덤 수 구하기 본문

Front-End/JavaScript

[JavaScript] Math.random() 으로 범위 내 랜덤 수 구하기

너해동물원 2023. 1. 11. 17:35

Math.random() 은 0 이상 1 미만 (0 ~ 0.9999...) 의 난수(랜덤한 숫자)를 반환한다. 

보통 Math.random() 값에 10을 곱한 뒤, Math.floor()를 통해 소수점 아래 부분을 내림해 0 이상 10 미만 정수를 만드는데 많이 쓰인다.

 

그런데, 0 ~ 10 사이 수가 아닌, 내가 원하는 범위 내에서 랜덤한 값이 반환되게 하고 싶으면 어떻게 해야할까?

일단, 랜덤함수의 범위는 0 <= x < 1 이므로 곱해준 수 만큼 범위가 늘어난다.

 

 // 랜덤 함수에 5를 곱하면
Math.random() * 5

// 난수의 범위가 아래처럼 변경
0 <= X < 1
0 * 5 <= X < 1 * 5
0 <= X < 5

 

만약 5 이상 10 미만의 값을 구하고 싶다면 5 <= X < 10 범위가 설정되어야 하지만, 0으로 시작하는 랜덤값의 범위에 숫자를 곱해서 원하는 값을 나타낼 순 없다. 아래와 같은 방법을 사용해야 한다.

// 아래와 같은 순서로 범위가 변경

0 <= X < 1
0*(10-5) <= X < 1*(10-5)
0 <= X < 5
0+5 <= X < 5+5
5 <= X < 10


Math.floor(Math.random() * (max - min + 1)) + min 에서 (max - min)에 1을 더하면 최대값까지 포함하게 되어 5이상 10이하의 값을 반환할 수 있게 된다.