본문 바로가기
Programming Language/JavaScript

[JavaScript] Js로 숫자 무작위 추첨 (Math.random() 사용법)

by veggie-garden 2021. 10. 9.

Math.random()

Math.random() 함수는 0 이상 1 미만의 난수를 반환한다. 

더보기

난수란?

난수(亂數)란 정의된 범위 내에서 무작위로 추출된 수를 일컫는다. 난수는 누구라도 그다음에 나올 값을 확신할 수 없어야 한다.

- 출처: 위키백과

 

0 이상 1 미만의 난수 구하기

function randomNum() {
	return Math.random();
}

 

위의 코드를 돌려보면 이런 식으로 반환한다.

 

범위 지정하기

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

결괏값은 항상 min보다 크며, max보다 작다. 

왜 최솟값을 더할까?

만약 1~10 사이의 수를 구한다 치자. Math.random()은 항상 0 이상 1 미만의 수를 리턴하니 Math.random()이 반환할 수 있는 가장 작은 수 0을 반환했다면, 0 * (10 - 1)는 0이다. 여전히 1보다 작다. 이때 최솟값인 1을 더해준다면 1이 되어 범위 내의 숫자를 구할 수 있게 되었다.

 

이번에는 Math.random()이 반환할 수 있는 최댓값 0.9999... (이하 0.9라고 쓰겠다)을 반환했다고 하자. 그럼 0.9 * (10 - 1) 은 8.1이다. 그럼 8.1 더하기 1을 하면 9.1로, Math.random() * (max - min) + min 은 항상 최댓값 미만, 최솟값 이상의 수를 반환한다.

더보기

미만

'미만'(未滿)은 그 수량이 범위에 포함되지 않으면서 그 아래인 경우를 가리킨다.

이상

‘이상’(以上)은 기준이 수량으로 제시될 경우 그 수량이 범위에 포함되면서 그 위인 경우를 가리킨다.

- 출처: 서울신문

 

만약 최댓값을 포함하고 싶다면 아래와 같이 작성하면 된다.

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

 

정수 난수 구하기

Math.ceil() (올림)

Math.ceil()

// Math.ceil(Math.random())

 

Math.ceil()주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 integer로 반환한다[각주:1]. 즉, 실수가 들어오면 올림 하여 정수로 만들고, 정수가 들어오면 크거나 같은 숫자 중 가장 작은 숫자인 자기 자신을 반환한다. ceil는 영단어 ceiling에서 유래했는데, 이는 천장을 의미한다.  

 

Math.ceil(4);
// 4
Math.ceil(1.4);
// 2
Math.ceil(1.6);
// 2
Math.ceil(-1.4);
// 2
Math.ceil(-1.6);
// 2

 

Math.floor() (내림)

Math.floor()

// Math.floor(Math.random())

 

Math.floor()는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다[각주:2]. 즉, 즉, 실수가 들어오면 올림 하여 정수로 만들고, 정수가 들어오면 크거나 같은 숫자 중 가장 작은 숫자인 자기 자신을 반환한다. Floor는 바닥, 천장과 반대인 바닥에서 이름을 따왔다.

 

Math.floor(4);
// 4
Math.floor(1.4);
// 1
Math.floor(1.6);
// 1
Math.floor(-1.4);
// -2
Math.floor(-1.6);
// -2

 

Math.round() (반올림)

Math.round()

// Math.round(Math.random())

 

Math.round()는 입력값을 반올림한 수와 가장 가까운 정수 값을 반환한다 [각주:3]. 즉, 소수점이 5 이상이면 올림, 5 미만이면 내림한 수를 반환한다. 

 

Math.round(4);
// 4
Math.round(1.4);
// 1
Math.round(1.6);
// 2
Math.round(-1.4);
// -2
Math.round(-1.6);
// -1

참고

1. https://www.educative.io/edpresso/mathceil-mathfloor-and-mathround-in-javascript

 

Math.ceil, Math.floor, and Math.round in JavaScript

Math.ceil, Math.floor, and Math.round in JavaScript

www.educative.io

2. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/random

 

Math.random() - JavaScript | MDN

Math.random() 함수는 0 이상 1 미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환하며, 이 값은 사용자가 원하는 범위로 변형할 수 있다. 난수 생성 알고리즘에 사용

developer.mozilla.org

3. https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-math-random-%EB%B2%94%EC%9C%84-%EC%9E%90%EB%A6%BF%EC%88%98/

 

자바스크립트 Math.random() 범위 지정 및 정수 자릿수 조절 - dAsImA

자바스크립트 math.random() 객체는 무엇일까요? 0 ~ 1사이의 난수를 생성합니다. 범위를 지정하려면 곱하거나 더하는 값을 조정해주면 됩니다. 정수값만 추출하고 싶다면 결과에 Math.floor() 객체를

dasima.xyz


 

댓글