Kotlin - 랜덤 숫자 생성 (Random, SecureRandom)

코틀린에서 무작위 숫자 생성 방법을 소개합니다.

Math.random()

Math.random()0 <= n < 1 범위의 숫자(Double)를 무작위로 생성합니다.

fun main(args: Array<String>){

    println(Math.random())  // 0 <= n < 1

    println(Math.random())

    println(Math.random())
}

Output:

0.8510430769472556
0.30969568684879034
0.44610616095278166

Range.random()

어떤 숫자 범위가 정의된 Range 객체의 random() 메소드를 호출하면 그 범위의 무작위 숫자가 리턴됩니다.

fun main(args: Array<String>){

    val range = (1..15)  // 1 <= n <= 15
    println(range.random())
    println(range.random())

    val random = (1..20).random()  // 1 <= n <= 20
    println(random)
}

Output:

4
13
7

ThreadLocalRandom

ThreadLocalRandom을 이용하여, 지정된 범위의 무작위 숫자 Int, Double, Long을 생성할 수 있습니다.

import java.util.concurrent.ThreadLocalRandom

fun main(args: Array<String>){

    val randomDouble = ThreadLocalRandom.current().nextDouble(1.0, 10.0)
    val randomInteger = ThreadLocalRandom.current().nextInt(1, 10)
    val randomLong = ThreadLocalRandom.current().nextLong(1, 10)

    println(randomDouble)  // 1 <= n < 10.0
    println(randomInteger)  // 1 <= n < 10
    println(randomLong)  // 1 <= n < 10
}

Output:

1.7703291471753246
6
8

SecureRandom

위에서 소개한 방법들은 정해진 패턴으로 랜덤 숫자를 생성합니다. 그렇기 때문에 패턴을 찾아 생성되는 숫자를 예측할 수 있습니다.

SecureRandom은 예측이 불가능한 랜덤 숫자를 생성하여 Security 측면에서 좋습니다.

import java.security.SecureRandom

fun main(args: Array<String>){

    val secureRandom = SecureRandom()

    println(secureRandom.nextInt(100))  // 0 <= n < 100
    println(secureRandom.nextDouble())
}

Output:

import java.security.SecureRandom

fun main(args: Array<String>){

    val secureRandom = SecureRandom()

    println(secureRandom.nextInt(100))  // 0 <= n < 100
    println(secureRandom.nextDouble())
}
Loading script...
codechachaCopyright ©2019 codechacha