Kotlin - 创建指定长度的随机整数的 ArrayList?

问题描述 投票:0回答:7

我有一个像这样的

ArrayList
:

var amplititudes : ArrayList<Int> = ArrayList()

我想用随机整数填充它。我怎样才能做到这一点?

java kotlin
7个回答
21
投票

一种选择是使用数组构造函数,如下所示:

var amplititudes  = IntArray(10) { Random().nextInt() }.asList()

另一个策略是:

var amplititudes  = (1..10).map { Random().nextInt() }

编辑(已过时!)

您不再需要这样做,因为 Kotlin 只会创建一个 Random 实例。

正如评论中所建议的,不要每次都创建

Random
的实例,最好初始化一次:

var ran = Random()
var amplititudes  = (1..10).map { ran.nextInt() }

6
投票

根据@Md Johirul Islam的回答您也可以使用:

val from = 0
val to = 11
val random = Random
var amplititudes  = IntArray(10) { random.nextInt(to - from) +  from }.asList()

在此解决方案中,您可以指定所需的整数范围,例如从 0 到 10


5
投票

自从 Kotlin 1.3 发布以来,无需使用 Java 的

java.util.Random
,这会将你的代码限制在 JVM 上。相反,引入了
kotlin.random.Random
,它可在所有支持 Kotlin 的平台上使用。

val amplititudes  = IntArray(10) { Random.nextInt() }.asList()

由于您使用伴生对象,因此您无需担心每次迭代都会实例化一个

Random
对象(就像 Java 对象一样,您必须将其放入变量中)。


4
投票

也许是这样的:

val amplitudes = ThreadLocalRandom.current().let { rnd ->
    IntArray(5) { rnd.nextInt() }
}

或者这个:

val amplitudes = ThreadLocalRandom.current().let { rnd ->
    (0..5).map { rnd.nextInt() }.toIntArray()
}

1
投票

要生成指定长度的列表且在一定限制之间的随机数,请使用:

val rnds = (1..10).map { (0..130).random() }

Where

(1..0)
-> 返回 10 项列表
(0..130)
-> 返回给定范围内的随机数


0
投票

此时,您的问题中未指定 Int 的范围以及您需要多少个。

所以我将情况限制为 [n,m] 间隔,并且我想您想要所有 m-n+1 元素。

利用ArrayList的方法shuffle,

var shuffledList = ArrayList((n..m).toList())
shuffledList.shuffle()

0
投票
import kotlin.random.Random


fun main() {
    // creates an instance of ArrayList<Int!>
    val list = ArrayList(List(10) { Random.nextInt() })
}

已在 Kotlin v2.0.20 上验证

© www.soinside.com 2019 - 2024. All rights reserved.