import java.util.*
fun main() {
// 생성자에 Seed값을 넣어줄 수 있고 넣으면 고정된 숫자가 나온다.
// Random생성자에 인자 넣지 않으면 나노타임이 들어가서 같은 값이 나오지 않는다.
val random = Random()
//숫자 하나 뽑아보기 인자를 n으로 주면 %n한 결과가 나온다.
println("${random.nextInt()}")
println("${random.nextInt(45)+1}")
//중복된 숫자가 들어올 수 있는 방법
for(i in 1..6) {
print("${random.nextInt(45)+1} ")
}
println()
//중복을 방지하기 위해 list를 사용해본다.
val list = mutableListOf<Int>()
while(list.size < 6) {
val randomNumber = random.nextInt(45) + 1
if (list.contains(randomNumber)) {
continue
}
list.add(randomNumber)
}
println(list)
//중복을 방지하기 위해 set을 사용해본다.
val numberSet = mutableSetOf<Int>()
while(numberSet.size < 6) {
val randomNumber = random.nextInt(45) + 1
numberSet.add(randomNumber) // set은 중복된 원소를 알아서 거르기때문에 if문 없이도 사용할 수 있다.
}
println(numberSet)
//중복을 방지하기 위해 배열에 1~45까지 숫자를 채우고 shuffle하여 앞 6개를 가져온다.
val totalList = mutableListOf<Int>().apply { //초기화 구문에 많이 사용되는 apply, 객체를 그대로 반환한다.
for(i in 1..45) {
this.add(i)
}
}
println(totalList) // 먼저 잘 들어갔는지 확인
totalList.shuffle() // 무작위로 섞는다.
println(totalList)
println(totalList.subList(0, 6)) // 인덱스 0~5까지의 subList를 출력하게 된다.
}
'Kotlin' 카테고리의 다른 글
[Kotlin] lambda 와 higher-order function (0) | 2021.08.03 |
---|---|
[Kotlin] 함수 기초 (선언, 반환, default value, compact functions) (0) | 2021.08.03 |
[Kotlin] 리스트, 배열, 반복문에서 흥미로웠던 부분 (0) | 2021.08.03 |
[Kotlin] 기존 클래스의 확장함수 사용 (0) | 2021.07.18 |
[Kotlin] 코틀린 입문 - 기본 문법 (0) | 2021.07.16 |