Assignment
Math.random() => 0~0.9999999 값이 나온다
랜덤값은 소수점 형태로 나오니 나중에 Math.floor()로 정수 형태 변환해야한다.
랜덤값에 최소값을 곱한것과 랜덤값에 최대값을 곱한 그 값 사이의 모든것이 정답이겠다.
하나씩 차근히 대입해보며 코드 생각해보기
최소값 = 0 / 최대값 = 9 일때
랜덤 함수(Math.random())는 0~0.9999999 값이 나온다고했다.
이때 식에서 뽑히는 랜덤값이 0과 0.9999 라고 가정하고 두가지 경우를 대입해보자
랜덤값이 0.9999 일때
0.9999 * 최소값 0 = 0
0.9999 * 최대값 9 = 8.xxx
이렇게 되면 최대값 9 포함이 안되는데?
최대값에 포함이 안되는경우 수정
최대값에 1을 더해준다
Math.random()*(max+1)
이러면 최대 = 9.xxx 나오게된다
여기서 최대-최소 = 사이값이니까
랜덤*(최대+1-최소) 하면됨
Math.random()*(max+1-min)
0 * 최소값 1 = 0
이렇게 되면 최소값 1 포함 안되는데?0 * 최대값 10 = 0
얘도 똑같고?최소값에 포함이 안되는경우 수정
0*(10+1-1) = 0
최소값 1로 설정해두었는데 랜덤값이 0 이라면 무조건 0 나오게됨
이 문제를 해결하기위해 원래 있던식에 최소값만 더해보자
랜덤(최대+1-최소)+최소 하게되면
0(10+1-1)+1 = 1 따라서 조건에 맞게 나온다
마지막으로 floor씌우면 끝일듯
function getRandomNumber(min,max) {
return Math.floor(Math.random() * (max + 1 - min)) + min;
}
console.log(getRandomNumber(2,10)); // 2~10의 값이 나온다.