자바스크립트 랜덤함수 범위지정 이해하기

pixgram·2022년 12월 28일
0

Math.floor(Math.random() * (max - min + 1)) + min

자바스크립트로 범위를 지정하는 랜덤함수를 구글링해보면 위와 같은 식을 찾을 수 있다.

먼저 랜덤함수의 범위를 생각해보자. 이 함수는 0부터 1미만의 숫자를 생성한다.

Math.random()
[0.................1]

이 함수의 최소값은 0이므로 어떤수를 곱하면 그 값이 최대값이 된다.

Math.random() * 5
[(0 * 5).................(1 * 5)]
[0.................5] -> 0부터 5미만의 수를 생성함

이번엔 최소값을 생각해보자.

Math.random() + 5 => [Math.random() + 최소값]
[(0 + 5).................(1 + 5)] -> 최대값도 같이 변함
[5.................6]

0~1까지의 범위가 5~6까지의 범위로 바뀌었다. 여기서 생각할 것은 단순히 더하는 것은 최대값에도 변화를 준다는 것이다. 그래서 최소값을 설정할때는 최대값을 보정해야 한다. 1부터 5까지의 범위를 지정한다고 생각하면..

Math.random() * (5 - 1) + 1 => Math.random() * (최대값 - 최소값) + 최소값
[(0 * 4) + 1.................(1 * 4) + 1]
[1.................5]

예를들어 1~5사이의 랜덤값을 구한다면 먼저 0~4까지의 값을 구한 후 최소값인 1을 더해주면 1~5의 값이 될것이다. 최소값이 최대값에 더해질 것을 생각하여 최대값을 먼저 구한 후 최소값을 더해주는 식이 필요하다는 것을 알 수 있다.

Math.random() * (max - min) + min

여기에 Math.floor()를 사용하여 정수부분을 포함시키는것을 추가해주면

Math.floor(Math.random() * (max - min + 1)) + min

위와 같은 식이 나오게 된다.

profile
Interactive Front-end Developer and WebGL Artist

0개의 댓글