• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

랜덤 난수의 정수화

24.05.23 13:52 작성 조회수 66

0

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

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.25

안녕하세요, 인프런 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() 방식을 사용하는 것이 더 적절합니다.

채널톡 아이콘