Подсчет средств из массива кортежей в Scala - PullRequest
2 голосов
/ 24 мая 2011

Я пишу простой короткий код, чтобы продемонстрировать начинающему программисту, как ряд случайных чисел сходится в среднем.Для этого я сгенерировал массив кортежей, которые хранят размер и среднее значение массива произвольного размера и заполненного.Вот код, который я использую для этого:

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.Кто-нибудь сможет помочь с этим?И, если у вас есть конструктивная критика в отношении приведенного выше кода, это также поможет.

Спасибо.

1 Ответ

8 голосов
/ 24 мая 2011

при условии:

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

, затем:

array
  .groupBy(_._1)
  .mapValues(xs => mean(xs.map(_._2)))
  .toArray
  .sortBy(_._1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...