random - 如何在 Kotlin 中获取随机数?

一个可以返回两个参数之间的随机整数的通用方法,就像 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 之前,在 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对于我的建议的变化。它还包括随机 Chars 的扩展功能。

https://stackoverflow.com/questions/45685026/

相关文章:

kotlin - Kotlin 中等效的 Swift 'if let' 语句

kotlin - Kotlin 中的单个感叹号

hibernate - 带有 JPA : default constructor hell 的 Ko

kotlin - bool 值的使用?在 if 表达式中

syntax - Kotlin 二级构造函数

android-studio - Unresolved reference : kotlinx

android-studio - Android Studio 3.0 - 找不到方法 'com.a

generics - Kotlin 中的 reified 关键字是如何工作的?

kotlin - Kotlin 中的多变量 let

asynchronous - Kotlin协程中的launch/join和async/await有什