본문 바로가기

JavaScript/JavaScript_지식_정리

Javascript에서 랜덤한 값 생성(난수 생성)

Math.random( )

Math.random( )은 0 ~ 1 사이에서 랜덤한 부동소수점 값을 반환한다.

물론 사용자가 원하는 범위를 * (곱하기)+ (더하기) 를 이용해 지정하는 것이 가능하다.

기본적으로 반환값이 실수형이여서, 정수형 랜덤 값을 반환받고 싶다면, Math.floor( )를 추가로 사용해야 한다.

 

Math.random( ) 사용법

Math.random() - 0 이상 1 미만 랜덤한 실수값을 반환
let result = Math.random();
console.log(result); // 0.7712465203639336(실행할 때마다 값은 바뀐다)

 

범위를 지정하지 않았을 경우 0 이상 1 미만의 값 중에서 랜덤한 값을 반환한다.

 

Math.random() * 최댓값 - 0 이상 10 미만 랜덤한 실수값을 반환
let result = Math.random() * 10;
console.log(result); // 6.262940880978174(실행할 때마다 값은 바뀐다)

 

* (곱하기) 를 이용해서 최댓값을 10으로 만들었다.

이렇게 되면 0 이상 10 미만의 값 중에서 랜덤한 값을 반환한다.

 

(Math.random() * (최댓값-최솟값)) + 최솟값 - 1 이상 10 미만 랜덤한 실수값을 반환
let result = (Math.random() * 10 - 1) + 1;
console.log(result); // 4.831136301826513(실행할 때마다 값은 바뀐다)

 

+ (더하기) 를 이용해 최솟값을 1으로 만들었다.

하지만, 아까 최댓값을 지정하는 것 처럼 단순히 최솟값을 더하는게 아니라 최댓값에서 최솟값을 뺀 상태에서 최솟값을 더해주었다.

그 이유는 Math.random( ) 는 기본적으로 최솟값이 0인데 반환값에 최솟값을 더해주는 식으로 최솟값을 정하게 된다.

(Math.random() * 10) + 1;

위와 같은 방식이면, 최솟값은 1이 될테지만, 최댓값이 11이 되버린다. 

ex) 0 이상 10 미만의 범위에 +1 을 하여 1 이상 11 미만의 범위로 바뀐다.

 

(Math.random() * 10 - 1) + 1;

이를 방지하기 위해서 최댓값에서 최솟값을 빼는 과정이 필요하다.

ex) 0 이상 9미만 의 범위에 +1 을 하여 1 이상 10 미만의 범위로 바뀐다.

 

Math.floor(Math.random() * (최댓값 - 최솟값) + 최솟값) - 0 이상 10 미만 랜덤한 정수값을 반환
let result = Math.floor((Math.random() * 10 - 1) + 1);
console.log(result); // 8(실행할 때마다 값은 바뀐다)

 

Math.floor( )를 이용하여 Math.random( ) 의 반환 값을 정수로 바꾸어준다.