본문 바로가기

프로그래밍/[javascript] 자바스크립트

[javascript] 난수 생성 쉽게 이해하기(Math.random())

by GenieIT* 2024. 10. 27.

728x90
728x90

 

1. Math.random() 함수

  • JavaScript의 Math.random() 함수는 0 이상 1 미만의 무작위 실수(float)를 반환하는 함수로, 난수 생성에 많이 사용됩니다.
  • Math.random()은 정수나 특정 범위 내의 숫자를 바로 반환하지 않지만, 이를 활용하여 다양한 범위의 난수를 얻을 수 있습니다.
  • Math.random() 함수란 0 <= n < 1 범위의 무작위 실수값입니다. 

 

2. 기본 문법

  • 0 이상 1 미만의 무작위 실수값이 반환되는 예제입니다.
console.log(Math.random()); // 예: 0.12345678910111213
console.log(Math.random()); // 예: 0.9876543210987654

 

3. 특정 범위에서 난수 생성하기

3-1. 특정 범위의 실수 구하기 (float)

  • 5 이상 10 미만의 실수를 구하는 예제입니다.
function getRandomInRange(min, max) {
	return Math.random() * (max - min) + min;
}

console.log(getRandomInRange(5, 10)); // 출력 : 7.34948523

예제 해석)

  • Math.random()의 범위는 0 <= n < 1 입니다.
  • 예제에서 (max - min)은 5이기 때문에 범위에 곱셈을 합니다. --> 0*5 <= n < 1*5
  • 0 <= n < 5에서 min 값 5를 범위에 더합니다. --> (0 + 5) <= n < (5 + 5)
  • 따라서 위의 예제는 5 <= n < 10의 범위를 가지는 난수가 발생합니다.

 

3-2. 특정 범위의 정수 구하기 (int)

function getRandomInt(min, max) {
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

console.log(getRandomInt(5, 10)); // 출력 : 5, 6, 7, 8, 9, 10 중에 하나

예제 해석)

  • Math.random()의 범위는 0 <= n < 1 입니다.
  • 예제에서 (max - min + 1)은 6이기 때문에 범위에 곱셈을 합니다. --> 0*6 <= n < 1*6
  • 여기까지 0 <= n < 6 사이의 난수가 float 타입으로 생성됩니다. 예) 5.123456
  • Math.floor는 숫자 내림 기능을 하는 함수이기 때문에 발생된 난수에 내림 처리를 합니다.
  • 여기서 발생할 수 있는 최대값과 최소값을 생각해 보겠습니다.
  • 0 <= n < 6 사이의 실수는 0 ~ 5.xxxx 가 되고 내림 처리를 하면 0 <= n <= 5 범위의 정수값만 해당됩니다. (즉, 0,1, 2, 3, 4, 5 밖에 나올 수 없습니다.)
  • 마지막으로 min 값 5를 더합니다. --> (0 + 5) <= n <= (5 + 5)
  • 결과값은 5 <= n <= 10 범위의 정수값만 난수 발생이 됩니다.

 

3-3. 0 이상 특정값 미만의 정수 구하기 (int)

  • Math.floor()를 사용해 0 이상 10 미만의 정수를 얻는 예제입니다.
function getRandomIntBelow(n) {
  	return Math.floor(Math.random() * n);
}

console.log(getRandomIntBelow(10)); // 출력 : 0, 1, 2, ..., 9

예제 해석)

  • Math.random()의 범위는 0 <= n < 1 입니다.
  • 예제에서 n은 10이기 때문에 범위에 곱셈을 합니다. --> 0*10 <= n < 1*10
  • 여기까지 0 <= n < 10 사이의 난수가 float 타입으로 생성됩니다. 예) 5.123456
  • 0 <= n < 10 사이의 실수는 0 ~ 9.xxxx가 되고 내림 처리를 하면 0 <= n <= 9 범위의 정수값만 해당됩니다. 
  • 결과값은 0 <= n <= 9 범위의 정수값만 난수 발생이 됩니다.

 

3-4. 소수점 자릿수를 지정한 실수 구하기

  • 5 이상 10 미만의 소수점 2자리 실수를 얻는 예제입니다.
function getRandomFixed(min, max, decimalPlaces) {
  	const rand = Math.random() * (max - min) + min;
  	
    return parseFloat(rand.toFixed(decimalPlaces));
}

console.log(getRandomFixed(5, 10, 2)); // 출력 : 6.78

예제 해석)

  • Math.random()의 범위는 0 <= n < 1 입니다.
  • 예제에서 (max - min)은 5이기 때문에 범위에 곱셈을 합니다. --> 0*5 <= n < 1*5
  • 0 <= n < 5에서 min 값 5를 범위에 더합니다. --> (0 + 5) <= n < (5 + 5)
  • 5 <= n < 10의 범위를 가지는 float 타입 난수가 발생합니다.
  • toFixed() 메서드소수점 이하가 길면 숫자를 반올림하고, 짧아서 부족할 경우 뒤를 0으로 채울 수 있습니다.  
  • 결과값은 5 <= n < 10 범위의 소수점 2자리의 실수값만 난수 발생이 됩니다.

 


 

 

 

728x90