/ / ricampionamento in scala, il modo funzionale - scala, programmazione funzionale, ricampionamento

ricampionamento in scala, il modo funzionale - scala, programmazione funzionale, ricampionamento

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 № 1

Il 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)) }