타닥타닥 개발자의 일상

kotlin BooleanArray, Math.random 이용하여 중복되지 않는 랜덤 번호 골라주는 함수 만들기 본문

코딩 기록/Kotlin

kotlin BooleanArray, Math.random 이용하여 중복되지 않는 랜덤 번호 골라주는 함수 만들기

NomadHaven 2022. 2. 8. 22:28

 

예를들어 1부터 10까지의 수중 중복되지 않는 3개의 숫자를 고른다면

아래와 같은 함수를 만들어서 랜덤 번호를 뽑을 수 있다.

 

 fun random() {
			
            var randNum: IntArray = IntArray(3)
           	//구하고자하는 랜덤번호 3가지를 넣을 정수 배열을 선언한다.
           
            var switch = BooleanArray(10)
             //switch는 10개의 공간이 모두 0으로 채워진 배열이라고 가정한다.
           
           for (i in switch.indices){
            switch[i] = false 
            // 스위치가 false라는 말은 값이 배열에 있는 값이 전부 0 으로 세팅 되었다는 말이다.
            }

            var w =0 
            while(w<3){ 
            //뽑고 싶은 랜덤 번호의 숫자가 3개이므로 w은 <3으로 설정한다.
           
           var r = (Math.random() * 10).toInt() 
           //var r은 1~9 사이에서 랜덤으로 뽑힌 숫자이다.
            
            if(switch[r]==false){
                switch[r] =true 
                //switch[r] 번째는 초기에 false, 즉 0으로 세팅되었으므로 if문의 조건문으로 성립된다.
                //조건이 성립된후, r번째에 있는 switch 배열의 값은 true로 변한다.
                
                randNum[w] = r + 1 
                //r은 1에서 9까지의 값이므로 1을 더한다. 그리하여 최대값을 10으로 만든다.
                //제일 처음 선언헌 랜덤번호 배열에 r+1의 값을 대입한다.
                
            w++
            //3번동안 반복한다.
                }
            }
              for(i in randNum.indices){
                println("randNum[$i] = ${randNum[i]}")
            }

        }

IntArray, BooleanArray 의 사이즈를 다르게하여 여러가지 경우에 응용할수 있다.

ex)로또 번호 뽑기 

Comments