Ho una serie di campioni, D, che vorreiricampionare uniformemente con la sostituzione per costruire un nuovo array. Una soluzione procedurale è molto semplice, ma mi chiedo se qualcuno ha qualche idea su come farlo "in modo funzionale"? (Ho appena preso Scala e la programmazione funzionale)
Un'implementazione funzionale per dimostrare cosa intendo:
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)
risposte:
6 per risposta № 1Il Array
l'oggetto companion ha alcuni metodi per creare nuovi array e quello di cui hai bisogno è fill
:
val ResampledD = Array.fill(D.length)(D(util.Random.nextInt(D.length)))
o usare map
val ResampledD = D map { x => D(util.Random.nextInt(D.length)) }