gpt4 book ai didi

scala - 计算Scala中元组数组的均值

转载 作者:行者123 更新时间:2023-12-04 19:50:23 24 4
gpt4 key购买 nike

我正在编写一小段简单的代码来向新手程序员演示一系列随机数如何收敛于均值。为此,我生成了一个元组数组,用于存储随机大小和填充数组的大小和平均值。这是我用来执行此操作的代码:

val random = new scala.util.Random()

def gen(random:scala.util.Random) = {
val array = Array.fill(2 + random.nextInt(999)) { random.nextInt(100) }
val sum = array.reduceLeft(_ + _)
val mean = sum.toDouble / array.size
(array.size, mean)
}

val array = Array.fill(10000) { gen(random) }

然后我想计算大小相等的数组的均值的平均值,将其放入一个数组中,然后按原始数组的大小对其进行排序。因此,如果我有一个元组数组:(2, 57)、(2, 22)、(2, 40),我想要一个 (2, (57+22+40)/3) 条目,并且数组中的每个条目依此类推。

我不知道如何在 Scala 中以优雅、惯用和清晰的方式做到这一点。有人可以帮忙吗?而且,如果您对上述代码有任何建设性的批评,那也会有所帮助。

谢谢。

最佳答案

假设:

def mean(xs: Iterable[Double]) = xs.sum / xs.size

然后:

array
.groupBy(_._1)
.mapValues(xs => mean(xs.map(_._2)))
.toArray
.sortBy(_._1)

关于scala - 计算Scala中元组数组的均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6104040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com