0 ~ 1사이의 난수를 무작위로 생성합니다.
난수의 범위 지정은 곱하기 * 기호와 더하기 + 기호로 최대값과 최소값을 지정할 수 있습니다.
소숫점을 절삭하고 정수로 난수를 추출하는 방법은 Math.floor() 객체를 같이 사용하면 됩니다.
초기 범위인 0 ~ 1이 아닌 최대 범위를 조절하려면 어떻게 해야할까요?
곱하기 * 기호를 사용하면 됩니다. 왜냐하면 난수의 범위 시작이 0이므로 0에는 어떤 수를 곱해도 0이기 때문입니다. 따라서 최대값인 1에만 원하는 최대 범위를 곱하면 됩니다.
최대값 설정은 Math.random()에 원하는 최대값을 곱해주면 됩니다.
Math.random() * 최대값
최대값을 0부터 10으로 설정하려면 10을 곱해줍니다.
Math.random() * 10
최대값이 10이하로 설정되어 3.xxx의 난수가 생성되었습니다.
3.6878079985331946
최소값을 지정할 경우 아래처럼 약간의 수식 수정이 필요합니다.
( Math.random() * ( 최대값 - 최소값 ) ) + 최소값
최소값은 + 더하기 기호로 원하는 최소값을 더해줍니다.
그런데 최대값과 달리 최소값을 더하기로 들어가기 때문에 최대값도 동시에 변하게 됩니다.
따라서 최소값을 지정할 때에는 최대값에도 피해가 가지 않도록 셋팅이 필요합니다.
0 ~ 1 → 양변에 10을 곱하면, 0 ~ 10으로 최대값만 변함
0 ~ 1 → 양변에 1을 더하면, 1 ~ 2로 최소값과 최대값이 모두 변함
최대값을 10으로 변경해보겠습니다.
Math.random() * 10
현재 난수의 생성범위는 0 ~ 10 사이입니다.
두번재로 최소값을 1로 변경하려면 어떻게 해야 할까?
해당 수식에 +1을 더하면 난수의 생성범위는 1 ~ 11이 됩니다.
( Math.random() * 10 ) + 1
이런 식으로 10.xx와 같이 10이상의 값이 나오게 됩니다.
10.800218977628962
이를 방지하려면, 최대값 설정시 최대값에서 최소값을 빼버린 값을 대입하면 됩니다.
( Math.random () * (최대값 - 최소값) ) + 최소값
10에서 1을 뺀 값을 최대값에 대입하고, 최소값은 전체에서 더해주면 됩니다.
( Math.random() * (10 - 1) ) + 1
이럴 경우 최대값이 10미만의 숫자가 나오므로 10이 넘을 수 없습니다.
9.435629400190384