How can I get a random number in Kotlin?

后端 未结 22 1586
一个人的身影
一个人的身影 2020-12-12 15:02

A generic method that can return a random integer between 2 parameters like ruby does with rand(0..n).

Any suggestion?

22条回答
  •  借酒劲吻你
    2020-12-12 15:54

    Full source code. Can control whether duplicates are allowed.

    import kotlin.math.min
    
    abstract class Random {
    
        companion object {
            fun string(length: Int, isUnique: Boolean = false): String {
                if (0 == length) return ""
                val alphabet: List = ('a'..'z') + ('A'..'Z') + ('0'..'9') // Add your set here.
    
                if (isUnique) {
                    val limit = min(length, alphabet.count())
                    val set = mutableSetOf()
                    do { set.add(alphabet.random()) } while (set.count() != limit)
                    return set.joinToString("")
                }
                return List(length) { alphabet.random() }.joinToString("")
            }
    
            fun alphabet(length: Int, isUnique: Boolean = false): String {
                if (0 == length) return ""
                val alphabet = ('A'..'Z')
                if (isUnique) {
                    val limit = min(length, alphabet.count())
                    val set = mutableSetOf()
                    do { set.add(alphabet.random()) } while (set.count() != limit)
                    return set.joinToString("")
                }
    
                return List(length) { alphabet.random() }.joinToString("")
            }
        }
    }
    

提交回复
热议问题