본문 바로가기

Javascript/Algorithm

Javascript :: 중복없는 랜덤값

자바스크립트 중복없는 난수(랜덤값) 개념이 포함된 문제를 부족하지만 풀이해보았습니다.

 



문제    

사용자에게 입력받은 수만큼의 사원번호와 성적을 출력하는 프로그램을 만드시오.

동작예  

입력값 3

NT00002 80

NT11206 85

NT01321 15

설명    

"사원번호공백점수" 형태로 count 개의 줄이 출력되어야 한다.

조건    

1. 사원번호에서 NT는 바뀔수 없고, 뒤의 다섯 자리는 random 숫자, random 값이 99999 이하면 0으로 채움 

   ( 30이라면 NT00030 )

2. 사원번호 중복 안됨.

3. score는 0점 이상 100점 미만의 random 값 


 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript">
    
    var inputString = prompt("사원수 : ");
    var ranNumArr = []; // 사원번호 random 배열
    var scoreArr = []; // 성적 random 배열
 
    // random값 추출 함수
    function ranGenerator(max, min){
        return Math.floor((Math.random() * max) + min);
    }
    
    //  사원수만큼 사원번호, 성적값 생성
    for(var i = 0; i < inputString.valueOf(); i++){
        ranNumArr[i] = ranGenerator(999990);
        scoreArr[i] = ranGenerator(990);
        
        // 사원번호 중복체크 
        for(var j = 0; j < i; j++ ){
            // 이전값과 비교하여 중복일경우 random 값 다시 생성
            if(ranNumArr[i] == ranNumArr[j]){
                i = i - 1;
                break;
            }
        }
    }
    for(var i = 0; i < ranNumArr.length; i++){
        zeroSize = "";
        // random값 사이즈에 따라 "0"으로 채움
        for(var j = 0; j < 5 - ranNumArr[i].toString().length; j++){
            zeroSize += "0";
        }
        document.write("NT" + zeroSize + ranNumArr[i] + " " + scoreArr[i]);
        document.write("<br>");
 
    }
</script>
</body>
</html>  
cs