반응형

 

최소부터 최대까지 랜덤 하게 숫자를 가져와야 할 경우가 많다.

뭐 예를 들어서, 1부터 10까지 숫자 중에 하나를 가져와야 할 경우가 대표적인 예이다.

 

최소~최대 랜덤 숫자 가져오기

1
2
3
function getRandom(min, max) {
    return Math.floor((Math.random() * (max - min + 1)) + min);
}
cs

 

Math.floor 와 Math.random

Math함수 두 가지를 사용해서 손쉽게 랜덤 하게 숫자를 가져오는 함수를 만들 수 있다.

 

위에 그림처럼 최소값/최대값을 지정해줘서 넘겨주면, 우리가 원하는 랜덤한 결과값을 얻을 수 있다.

그렇다면, 중복없이 랜덤한 값을 n개를 얻고 싶을 경우도 만들어봤다.

 

 

최소~최대 N개 랜덤 숫자 가져오기(중복없이 배열)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 랜덤하게 추출
function getRandom(min, max) {
    return Math.floor((Math.random() * (max - min + 1)) + min);
}
 
// 랜덤하게 추출 (array Ver)
function getRandomArray(min, max, count) {
 
    // 종료
    if (max - min + 1 < count) return;
 
    // 배열 생성
    var rst = [];
    
    while (1) {
        var index = getRandom(min, max);
 
        // 중복 여부를 체크
        if (rst.indexOf(index) > -1) {
            continue;
        }
 
        rst.push(index);
 
        // 원하는 배열 갯수가 되면 종료
        if (rst.length == count) {
            break;
        }
    }
 
    // 정렬
    return rst.sort(function (a, b) {
        return a - b;
    });
}
cs

 

코드는 랜덤하게 추출했던 함수를 재사용했고

while 반복문을 수행하면서, count값과 배열의 크기가 같으면 리턴해주는 함수이다.

 

마지막에 정렬까지 해주는 센스를 발휘하면서

우리는 n개의 중복되지 않은 배열(Array)을 얻을 수 있다.

다양한 방법으로 응용이 가능하니, 여러가지 테스트 해보자.

궁금하시거나 필요한 함수가 있으시면 댓글 부탁드려요!ㅎㅎ

 

반응형

+ Recent posts