코딩 기록/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)로또 번호 뽑기