kotlin 创建一个指定长度的随机整数数组列表?

v8wbuo2f  于 2022-11-16  发布在  Kotlin
关注(0)|答案(6)|浏览(284)

我有一个ArrayList,如下所示:

var amplititudes : ArrayList<Int> = ArrayList()

我想用随机的整数填充它。我该怎么做呢?

daupos2t

daupos2t1#

其中一个选项是使用数组建构函式,如下所示:

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

另一个策略是:

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

编辑(已过期!)

  • 您不再需要这样做,因为Kotlin只会创建一个随机示例。*

正如注解中所建议的,与其每次都创建Random的示例,不如初始化一次:

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

x7rlezfr2#

根据@Md Johirul Islam的答案您还可以用途:

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

在这个解决方案中,你可以指定你想要的整数的范围,例如从0到10

twh00eeo

twh00eeo3#

也许是这样的:

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

或者这样:

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

eaf3rand4#

自从Kotlin1.3发布以来,就没有必要使用Java的java.util.Random,因为java.util.Random会将您的代码限制在JVM中。相反,引入了kotlin.random.Random,它在所有支持Kotlin的平台上都可用。

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

由于使用了伴随对象,因此不必担心每次迭代都示例化Random对象(就像Java对象一样,必须将其放入变量中)。

b0zn9rqh

b0zn9rqh5#

要生成List的指定长度且在特定限制之间的随机数,请用途:

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

其中(1..0)-〉返回10个项目的列表(0..130)-〉返回给定范围之间的随机数

6bc51xsx

6bc51xsx6#

这时,在你的问题中并没有指定Ints的范围和你需要多少。
所以我把这个例子限制在[n,m]区间,我假设你想要所有的m-n+1个元素。
利用ArrayList的方法shuffle,

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

相关问题