어제 오늘 내일

[Javascript] 난수 생성하기 (랜덤 숫자, Random Number) 본문

IT/Javascript

[Javascript] 난수 생성하기 (랜덤 숫자, Random Number)

hi.anna 2020. 12. 7. 00:28

 

Javascript로 난수를 생성하는 방법을 소개합니다.

 

  1. Math.random()
  2. 범위를 지정한 난수 생성하기
    • 0~9
    • 0~10
    • 0~99
    • 0~100
    • 1~10
    • 2~5
  3. 난수 생성 함수 만들기 (범위 지정)
    • min <= number <= max ( max 값 포함)
    • min <= number < max (max 값 불포함)

 

 

1. Math.random()

Math.random()

Javascript에서 난수를 생성하기 위해서는, Math.random() 함수를 사용합니다.

이 함수는 0~1(1은 미포함) 구간에서 부동소수점의 난수를 생성합니다.

 

const rand1 = Math.random();
const rand2 = Math.random();
const rand3 = Math.random();

document.write(rand1 + '<br>');
document.write(rand2 + '<br>');
document.write(rand3 + '<br>');

 

 

위 코드는 실행할 때마다 다른 난수를 생성합니다.

그리고, 그 값은 0~1 사이의 부동소수점 값입니다. (1은 포함하지 않습니다)

 

 

2. 범위를 지정한 난수 생성하기

Math.random() 함수는 0~1 사이의 부동소수점 난수를 생성합니다.

그렇다면, 정수인 난수를 생성하려면 어떻게 해야 할까요?

 

정수인 난수를 생성하기 위해서는

Math.random() 함수와 Math.floor() 함수를 함께 사용합니다.

Math.floor() 함수는 소수점 1번째 자리를 버림하여 정수를 리턴하는 함수입니다.

[Javascript] 반올림(round), 올림(ceil), 내림(floor) - 소수점, 음수,자리수 지정

 

예제

// (1) 0 <= random < 1
const rand1 = Math.random();
document.write('(1) ' + rand1 + '<br>');

// (2) 0
const rand2 = Math.floor(Math.random());
document.write('(2) : ' + rand2 + '<br>');

// (3) 0 <= random <= 9
const rand_0_9 = Math.floor(Math.random() * 10);
document.write('(3) : ' + rand_0_9 + '<br>');

// (4) 0 <= random <= 10
const rand_0_10 = Math.floor(Math.random() * 11);
document.write('(4) : ' + rand_0_10 + '<br>');

// (5) 0 <= random <= 99
const rand_0_99 = Math.floor(Math.random() * 100);
document.write('(5) : ' + rand_0_99 + '<br>');

// (6) 0 <= random <= 100
const rand_0_100 = Math.floor(Math.random() * 101);
document.write('(6) : ' + rand_0_100 + '<br>');

// (7) 1 <= random <= 10
const rand_1_10 = Math.floor(Math.random() * 10) + 1;
document.write('(7) : ' + rand_1_10 + '<br>');

// (8) 2 <= random <= 5
const rand_2_5 = Math.floor(Math.random() * 4) + 2;
document.write('(8) : ' + rand_2_5 + '<br>');



 

 

 (1) 0 <= random < 1 

Math.random();

Math.random() 함수는 0~1 사이의 실수를 리턴합니다.(1 미포함)

 

 (2) 0 

Math.floor(Math.random());

Math.floor() 함수는 소수점 1째자리 이후의 숫자를 버림하고, 정수를 리턴합니다.

Math.random() 함수는 0~0.99999...인 숫자를 리턴하기 때문에,

Math.floor(Math.random()) 의 결과는 항상 0입니다.

 

 (3) 0 <= random <= 9 

Math.floor(Math.random() * 10);

Math.random() 함수의 결과는 0~0.99999...이고,

Math.random() * 10 의 결과는 0~9.99999...입니다.

따라서, Math.floor(Math.random() * 10)의 결과는 0~9 범위의 정수입니다.

Math.random() 함수를 이용하여 정수 범위의 난수를 생성할 때는 

이렇게 Math.random() 함수를 호출한 결과를 조작하고, Math.floor()를 사용합니다.

 

 (4) 0 <= random <= 10 

Math.floor(Math.random() * 11);

10을 포함하는 정수 난수를 얻고 싶다면

Math.random() 함수의 결과에 11을 곱하고, 소수점 이하를 버림합니다.

 

 (5) 0 <= random <= 99 

Math.floor(Math.random() * 100);

0~99 범위의 정수 난수를 생성하려면

Math.random() 함수의 결과에 100을 곱해주고, 소수점 이하를 버림합니다.

 

 (6) 0 <= random <= 100 

Math.floor(Math.random() * 101);

0~100 범위의 정수 난수를 생성하려면

>Math.random() 함수의 결과에 101을 곱하고, 소수점 이하를 버림합니다.

 

 (7) 1 <= random <= 10 

Math.random() * 10) + 1;

최소값을 지정하고 싶을 때는 

Math.random() * (max - min + 1) 값을 계산하고, 소수점 이하를 버림합니다.

그리고, min 값을 더해줍니다.

1~10 범위의 정수 난수를 계산하기 위해서 아래와 같이 계산하였습니다.

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

= Math.floor(Math.random() * 10) + 1

 

 (8) 2 <= random <= 5 

Math.floor(Math.random() * 4) + 2;

(7)번 예제와 같이 범위를 지정하는 예제입니다.

Math.floor(Math.random() * (5 - 2 + 1)) + 2

= Math.floor(Math.random() * 4) + 2

 

 

3. 난수 생성 함수 만들기 (범위 지정)

min <= number <= max ( max 값 포함)

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

document.writeln(rand(1, 3));
document.writeln(rand(77, 88));

 

min ~ max 값까지의 정수 랜덤 넘버를 만들어주는 함수입니다.

 

min <= number < max (max 값 불포함)

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

document.writeln(rand(1, 3));
document.writeln(rand(77, 88));

 

max값을 포함하지 않는, min ~ max 값까지의 정수 랜덤 넘버를 만들어주는 함수입니다.

 

 


 

 

Math.random(), Math.floor() 함수를 이용해서 난수(random number)를 

만드는 방법을 알아보았습니다.

 

 

 

반응형
Comments