it공부 (개념)/javascript

자바스크립트에서 랜덤 정수 출력하기

cantor 2023. 3. 6. 00:52

자바스크립트에선 놀랍게도 랜덤정수를 출력하는 built-in(내장) 함수가 없다.

 

단지 0과 1 사이에서 랜덤 유리수를 출력해 주는 메서드 Math.random() 만이 있을 뿐이다.

 

하지만 이를 잘 응용하면 원하는 랜덤정수를 출력하는 함수를 만들 수 있다.

 

목차

1. 최댓값만 설정하기: 0부터 n 사이의 랜덤정수 구하기

2. 최솟값과 최댓값 모두 설정하기: min부터 max사이의 랜덤정수 구하기

 

 

 

간략한 설명

 

Math.random() ;  : 0 이상 1 미만의 랜덤 유리수를 반환한다.

 

Math.random() * X ; : 0 이상 X 미만의 랜덤 한 양수가 반환된다.

 

위에 만들어진 숫자에 Math.floor함수로 소수점에 해당하는 숫자를 버려주면, 

Math.floor(Math.random() * (X +1)) 의 반환값은 0 이상 X이하의 랜덤 정수가 된다.

 

*floor는 우리말 수학용어로 풀이하면  "내림"이다.

 

 

 

1. 최댓값만 설정하기: 0부터 n 사이의 랜덤정수 구하기

 

처음에 설명한 바로 그 방식이다.

 

step1 Math.random()에 max +1을 곱해준 후 

 

Math.floor 메서드에 대입해 준다.

// 1 이상 100 이하의 정수 구하기

const randomNumber = Math.random() * (100 + 1)
Math.floor(randomNumber)

//함수형태

function randomInteger (Max){
return Math.floor(Math.random() * (Max + 1));
}

randomInteger(100);

  

출력결과:

 

 

2. 최솟값과 최댓값 모두 설정하기: min부터 max사이의 랜덤정수 구하기

 


Math.random()에  (max - min + 1)을 곱해준 후 나온 값에 다시 min을 더해주면 된다.

 

다소 설명이 복잡해 보일 수 있으나, 첫 번째 예시의 단순한 응용이다.

 

최댓값이 max-min 이 나오게 설정한 후 

출력된 결과에 min을 더해주면 최솟값은 min, 최댓값은 max인 수식이 만들어진다.

 

// randomMax의 최솟값은 0, 최댓값은 max-min이다.
const randomMax = Math.floor(Math.random() * (max - min + 1));

//randomRange의 최솟값은 0 + min = min, 최댓값은 max - min + min = max이다.
const randomRange = randomMax + min

 

 

함수형태로 표현하면 다음과 같다.

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


//10이상 55이하의 정수 출력해보기 

randomInteger(10, 55);

randomInteger(10, 55);

randomInteger(10, 55);

randomInteger(10, 55);

randomInteger(10, 55);

 

 

최솟값을 음수, 최댓값을 양수로 설정해도 문제가 없다.

 

예시)

최솟값이 - 10, 최댓값이 100인경우

Math.floor(Math.random * (max - min +1 ));

은 0 이상  110 이하의 정수를 반환한다.

 

여기에 -10을 더해주면 -10 이상 100 이하인 정수를 반환받을 수 있다.

 

 

위에서 만들었던 함수로 -20 이상 10 이하인 랜덤정수를 출력해 보자.

 

 

읽어주셔서 감사합니다.

 

오탈자나 오류가 있다면 댓글을 남겨주세요.