2013-11-14 3 views
1

У меня есть массив выборок, D, которые я хотел бы с равномерной повторной выборкой с заменой построить новый массив. Процедурные решения очень просты, но мне интересно, есть ли у кого-нибудь идеи о том, как это сделать «функциональный путь»? (я только взял Scala и функциональное программирование)resampling в scala, функциональный способ

Функционал реализации, чтобы продемонстрировать, что я имею в виду:

val D = Array(0,1,2,3,4) 

val R = new Random();       
var ResampledD = Array[Int]();   
var i = 0;          
while (i < D.length) { 
    ResampledD = ResampledD :+ D(R.nextInt(D.length)); 
    i = i + 1; 
} 
ResampledD 
> res0: Array[Array[Int]] = Array(2, 2, 1, 3, 2) 

ответ

6

Array объект компаньон имеет некоторые методы для создания новых массивов, и тот, который вы потребность fill:

val ResampledD = Array.fill(D.length)(D(util.Random.nextInt(D.length))) 

или использовать map

val ResampledD = D map { x => D(util.Random.nextInt(D.length)) } 
+0

Спасибо за быстрый ответ! – kidmose

Смежные вопросы