一个泛型方法,可以返回两个参数之间的随机整数,就像ruby对rand(0..n)所做的那样。
任何建议吗?
一个泛型方法,可以返回两个参数之间的随机整数,就像ruby对rand(0..n)所做的那样。
任何建议吗?
当前回答
实现s1m0nw1的答案的另一种方法是通过变量访问它。这并不是说它更有效率,而是它使你不必输入()。
val ClosedRange<Int>.random: Int
get() = Random().nextInt((endInclusive + 1) - start) + start
现在它可以被这样访问
(1..10).random
其他回答
首先,您需要一个RNG。在Kotlin中,您目前需要使用特定于平台的工具(没有内置的Kotlin)。对于JVM,它是java.util.Random。你需要创建它的一个实例,然后调用random.nextInt(n)。
如果要从中选择的数字不是连续的,则可以使用random()。
用法:
val list = listOf(3, 1, 4, 5)
val number = list.random()
返回列表中的一个数字。
Kotlin中的以下内容对我来说效果很好:
(fromNumber.rangeTo(toNumber)).random()
数字的范围以变量fromNumber开始,以变量toNumber结束。fromNumber和toNumber也将包含在由此生成的随机数中。
要在Kotlin中获得一个随机Int数,请使用以下方法:
import java.util.concurrent.ThreadLocalRandom
fun randomInt(rangeFirstNum:Int, rangeLastNum:Int) {
val randomInteger = ThreadLocalRandom.current().nextInt(rangeFirstNum,rangeLastNum)
println(randomInteger)
}
fun main() {
randomInt(1,10)
}
// Result – random Int numbers from 1 to 9
希望这能有所帮助。
从kotlin 1.2开始,您可以这样写:
(1 . . 3) .shuffled () .last ()
只要注意它是大O(n),但对于一个小列表(特别是唯一值),它是可以的:D