[Replit] js 최소 ~ 최대값 랜덤 수 뽑기

HongDuHyeon·2022년 3월 3일
0
post-thumbnail
확실히 온라인보다는 오프라인이 낫다. 매우

랜덤수란 ?

  • 랜덤한 숫자를 가져오는 기능은 프로그램 개발에서 매우 자주 사용되는 기능임
  • 따라서, javascript는 built-in 함수로 포함되어 있음 Math.random()

구글링

구글에 js 최소 ~ 최대값 랜덤으로 뽑기를 치면 당연히 답은 나온다. 물론 생각보다 간결하고 길지 않고 어렵지 않다.

근데 이해가 안된다.

구글에선 이렇게 나온다.

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

내가 이해할 수 있는 방식대로 정리해보자.

내가 풀었던 방식

먼저 Math.*** 을 수를 어떻게까지 다룰 수 있는지 정리가 필요했다.

Math.round(x)메서드 : 반올림 값 반환.
Math.ceil(x)메서드 : 가장 가까운 정수로 올림 된 x 값을 반환
Math.floor(x)메서드 : 가장 가까운 정수 로 내림 한 x 값을 반환
Math.trunc(x)메서드 : x의 정수 부분 반환.
Math.sign(x)메서드 : x가 음수, null 또는 양수이면 반환
Math.pow(x, y)메서드 : x의 값을 y의 거듭제곱으로 반환
Math.sqrt(x)메서드 : x의 제곱근을 반환
Math.abs(x)메서드 : x의 절대(양수) 값을 반환
Math.min()메서드 : 인수 목록에서 가장 낮은 값 찾음
Math.max()메서드 : 인수 목록에서 가장 높은 값 찾음
Math.random()메서드 : 0(포함)과 1(제외) 사이의 난수 반환

랜덤수에서 사용할 함수들은 floorrandom이다.
floor는 위에 정리해놓았듯 가까운 정수로 내림을 한 x의 값을 반환하기 때문에 소수점이 없는 정수가 나오게 된다.
그리고 random값은 0과 1 사이에 0 부터 0.9999~ 까지의 수를 반환한다. 우리가 원하는건 최대값과 최소값의 사이에 있는 랜덤한 값이기 때문에 특정 수를 곱해줘서 정수로 만들고 floor를 사용해 소수점은 내릴 예정이다.

예를 들어 최대값 90최소값 35로 가정을 해보겠다.
Math.random()은 값을 곱할수록 최대값은 올라간다.

  • 첫번째로 시작값이 최소값이어야 하므로 최대값까지의범위에서 최소 값까지의 범위를 빼면 사이 범위의 값(범위)로 한정할 수 있다.**
    • 아래 적은 코드를 확인 해보면 내가 설정한 로직들이 제대로 들어가있는게 보인다. 여기서 유의할 점은 앞으로 추가가 될 코드말고 현재 써져있는 코드들이 먼저 계산이 되어야 한다. 괄호로 먼저 묶어준 이유이다.
function getRandomNumber(max, min) {
    	const randomNum = Math.floor((Math.random()*(max - min + 1)));
        return randomNum
    }
  • 두번째로 앞선 코드들이 제대로 실행이 되었다면 random의 영향으로 최소값은 0에 맞춰져있을 것이다.
    원하는 코드대로 나오려면 최대값은 90, 최소값은 35 라는 값 안에서 랜덤으로 도출이 되어야하기 때문에 마지막으로 +35(min) min으로 파라미터를 받아와서 최소값을 설정해준다.
	function getRandomNumber(max, min) {
    	const randomNum = Math.floor((Math.random()*(max - min + 1)) + min);
        return randomNum
    }

이렇게 하면 max와 min에서 받아온 파라미터로 최소값과 최대값 사이에 랜덤수를 반환할 수 있다.

profile
마음이 시키는 프론트엔드.. RN과 IOS를 곁들인..

0개의 댓글