Math.random() 으로 최소, 최대 값 사이 랜덤 수 구하기

라용·2022년 8월 19일
0

위코드 - 스터디로그

목록 보기
9/100

wecode 레플릿 과제를 풀며 정리한 내용입니다.

최소값과 최대값을 매개변수로 받아 두 숫자 사이의 랜덤 숫자를 구하는 함수를 만들면 아래와 같습니다.

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

Math.random() 은 0 이상 1 미만 (0 ~ 0.9999...) 의 난수(랜덤한 숫자)를 반환합니다. Math.floor() 소수점 아래 부분을 내림해 정수를 만듭니다.
랜덤함수의 범위는 0<= x < 1 이므로 곱해준 수 만큼 범위가 늘어납니다.

 // 랜덤 함수에 5를 곱하면
Math.random() * 5

// 난수의 범위가 아래처럼 변경
0 <= X < 1
0 * 5 <= X < 1 * 5
0 <= X < 5

최소값 50 최대값 100 사이의 랜덤값을 구하고 싶다면 50 <= X < 100 범위가 설정되어야 하지만, 0 으로 시작하는 랜덤값의 범위에 숫자를 곱해서 50을 최소값으로 정할 순 없습니다. 그러니 갯수를 기준으로 생각해야 합니다. 50과 100 사이에는 50개의 숫자가 들어가니 0 <= X < 50 의 랜덤값을 반환하고, 그 값에 최소값 50을 더해줍니다.

// 아래와 같은 순서대로 범위가 변경

0 <= X < 1
0*(100-50) <= X < 1*(100-50)
0 <= X < 50
0+50 <= X < 50+50
50 <= X < 100

위와 같은 원리로 아래 코드가 동작합니다.
Math.floor(Math.random() * (max - min + 1)) + min
여기서 (최대값 - 최소값)에 1을 더하면 최대값까지 포함하게 됩니다.

// 100 까지 포함하는 범위로 설정

0 <= X < 1
0*(100-50+1) <= X < 1*(100-50+1)
0 <= X < 51
0+50 <= X < 51+50
50 <= X < 101
profile
Today I Learned

0개의 댓글