강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

탱_님의 프로필 이미지
탱_

작성한 질문수

따라하며 배우는 자바스크립트 A-Z

자바스크립트 연산 및 Math Object

랜덤 난수의 정수화

작성

·

155

0

Math.floor(Math.random() * num + 1) 처럼 알려주셨는데 대신Math.ceil(Math.random() * num) 으로 써도 되나요? 차이가 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

님의 질문에 답변드리겠습니다. Math.floor(Math.random() * num + 1)Math.ceil(Math.random() * num)은 비슷해 보이지만, 역할에 있어서 약간의 차이가 있습니다.

Math.floor(Math.random() * num + 1)는 1부터 num까지의 정수 중 하나를 반환합니다. 여기서 Math.random()은 0에서 1 사이의 실수를 반환하므로, num을 곱한 후 Math.floor()를 사용하면 0부터 num - 1까지의 정수가 나오고, 여기에 1을 더해 1부터 num까지의 정수를 얻을 수 있습니다.

반면, Math.ceil(Math.random() * num)는 1부터 num까지의 정수를 반환할 수도 있지만, Math.random()이 0을 반환할 때를 제외하고는 원하는 범위를 정확하게 얻기 어렵습니다. 즉, Math.random()이 0을 반환하는 극히 드문 경우를 제외하고는 주로 1부터 num까지의 값을 얻지만, Math.random()이 0을 반환하면 결과가 1이 아닌 0이 되어 원하는 범위를 벗어납니다.

따라서, 1부터 num까지의 정수 중 하나를 무작위로 선택하려는 목적이라면, Math.floor() 방식을 사용하는 것이 더 적절합니다.

탱_님의 프로필 이미지
탱_

작성한 질문수

질문하기