wecode JS replit 22번 복습

juno·2022년 7월 26일
0

replit 복습

목록 보기
3/4

Assignment

최소(min), 최대값(max)을 받아 그 사이의 랜덤수를 return 하는 함수를 구현해주세요.
함수는 짧지만, 이번에는 수학의 뇌를 조금 써야 하는 assignment 입니다. 🙌
앞으로 랜덤함수를 쓸 일이 정말 많습니다.
그런데 Math.random() 으로는 내가 원하는 범위의 랜덤수를 얻을 수가 없습니다.
항상 0.0000000000000000에서 0.9999999999999999 사이 값만 return 해주기 때문이죠.

코드

function getRandomNumber (min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    const a = Math.floor(Math.random() * (max - min + 1) + min);
    return a
}

풀이

Math.random() = 0이상 1미만 리턴 --> 0은 나올수 있는데 1은 나올수 없다.

  1. (max - min + 1) why??
    getRandomNumber는 최소값 최대값 두개의 인자를 받는데, 'max - min +1' 로 두 수의 범위를 나타낸다.
    ex) getRandomNumber (2, 10) -> 9, getRandomNumber (10, 100) -> 91

  2. (max - min + 1) + min 하는이유

    Math.random()은 0이 나올 때를 생각하여 최소값을 더해준다.
    그리고, random숫자가 최대값이 나오면 값을 초과하지 않을까?? 라고 생각할 수도있는데,
    최대값에서 min값을 뺀 범위에서 놀기 때문에 아니다.
    위에 예제만 봐도 랜덤 숫자를 곱했을 때
    getRandomNumber (2, 10) -> 9에 랜덤 숫자를 곱하면 8.xxxxxxx 가최대값
    getRandomNumber (10, 100) -> 91에 랜덤 숫자를 곱하면 90.xxxxxxx가 최대값
    뒤에 min을 더한다고 값을 초과하지않는다.
    잘모르겠으면 콘솔로 계속 출력해보면 알 수 있다.

    3. Math.floor()
    마지막으로 나머지를 다 버리면 끝이다.

profile
안녕하세요 인터랙션한 웹 개발을 지향하는 프론트엔드 개발자 입니다. https://kimjunho97.tistory.com => 블로그 이전 중

0개의 댓글