一个泛型方法,可以返回两个参数之间的随机整数,就像ruby对rand(0..n)
所做的那样。
有什么建议吗?
发布于 2017-08-15 09:07:01
生成一个介于from
(包含)和to
(不包含)之间的随机整数
import java.util.Random
val random = Random()
fun rand(from: Int, to: Int) : Int {
return random.nextInt(to - from) + from
}
发布于 2018-02-16 06:59:12
从kotlin 1.2开始,你可以这样写:
(1..3).shuffled().last()
只要注意它是大的O(n),但是对于一个很小的列表(特别是唯一值的列表),它是可以的:D
发布于 2017-08-20 07:21:04
您可以创建一个类似于java.util.Random.nextInt(int)
的extension function,但是它的绑定使用IntRange
而不是Int
:
fun Random.nextInt(range: IntRange): Int {
return range.start + nextInt(range.last - range.start)
}
现在,您可以将其用于任何Random
实例:
val random = Random()
println(random.nextInt(5..9)) // prints 5, 6, 7, 8, or 9
如果您不想管理自己的Random
实例,那么您可以使用例如ThreadLocalRandom.current()
来定义一个方便的方法
fun rand(range: IntRange): Int {
return ThreadLocalRandom.current().nextInt(range)
}
现在您可以像在Ruby中那样获取一个随机整数,而不必首先自己声明一个Random
实例:
rand(5..9) // returns 5, 6, 7, 8, or 9
https://stackoverflow.com/questions/45685026
复制相似问题