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를 출력하게 된다.
}