一个可以返回两个参数之间的随机整数的通用方法,就像 ruby 对 rand(0..n)
所做的那样。
有什么建议吗?
最佳答案
我的建议是 extension IntRange上的功能像这样创建随机数:(0..10).random()
TL;DR Kotlin >= 1.3,所有平台随机一个
从 1.3 开始,Kotlin 自带了自己的多平台随机生成器。在此 KEEP 中有描述.下面描述的扩展名现在是 part of the Kotlin standard library ,只需像这样使用它:
val rnds = (0..10).random() // generated random from 0 to 10 included
Kotlin <1.3
在 1.3 之前,在 JVM 上我们使用 Random
甚至如果我们在 JDK > 1.6 上使用 ThreadLocalRandom
。
fun IntRange.random() =
Random().nextInt((endInclusive + 1) - start) + start
这样使用:
// will return an `Int` between 0 and 10 (incl.)
(0..10).random()
如果您只希望函数返回 1, 2, ..., 9
(不包括 10
),请使用由 until
构造的范围:
(0 until 10).random()
如果您使用 JDK > 1.6,请使用 ThreadLocalRandom.current()
而不是 Random()
.
KotlinJs 和其他变体
对于 kotlinjs 和其他不允许使用 java.util.Random
的用例,请参阅 this alternative .
另外,请参阅 answer对于我的建议的变化。它还包括随机 Char
s 的扩展功能。
关于random - 如何在 Kotlin 中获取随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45685026/