簡體   English   中英

Kotlin - 創建一個指定長度的隨機整數的 ArrayList?

[英]Kotlin - Create an ArrayList of random Integers of specified length?

我有一個這樣的ArrayList

var amplititudes : ArrayList<Int> = ArrayList()

我想用隨機整數填充它。 我怎樣才能做到這一點?

一種選擇是使用數組構造函數,如下所示:

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

另一種策略是:

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

編輯

正如評論中所建議的,不要每次都創建一個Random實例,最好初始化一次:

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

根據@Md Johirul Islam的回答,您還可以使用:

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

在此解決方案中,您可以指定所需的整數范圍,例如從 0 到 10

也許是這樣的:

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

或這個:

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

由於 Kotlin 1.3 已發布,因此無需使用 Java 的java.util.Random將您的代碼限制為 JVM。 取而代之的是kotlin.random.Random ,它在支持 Kotlin 的所有平台上都可用。

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

由於您使用的是伴隨對象,因此您無需擔心每次迭代都會實例化一個Random對象(就像使用 Java 時必須放入變量一樣)。

要生成指定長度的 List 和某些限制之間的隨機數,請使用:

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

其中(1..0) -> 返回 10 個項目的列表(0..130) -> 返回給定范圍之間的隨機數

此時,您的問題中未指定 Int 的范圍以及您需要多少。

所以我將 case 限制為 [n,m] 間隔,我想你想要所有 m-n+1 元素。

利用ArrayList的方法shuffle,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM