Kotlin

[Kotlin] Random

노소래 2021. 7. 16. 03:05
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를 출력하게 된다.


}