重新采样scala,功能方式

kid*_*ose 1 functional-programming scala resampling

我有一个样本数组D,我想用替换来统一重新采样以构造一个新数组.程序解决方案非常简单,但我想知道是否有人对如何做到"功能方式"有一些想法?(我只是选择了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)
Run Code Online (Sandbox Code Playgroud)

Lui*_*hys 6

Array同伴对象有一些方法来建立新的数组,你需要的是fill:

val ResampledD = Array.fill(D.length)(D(util.Random.nextInt(D.length)))
Run Code Online (Sandbox Code Playgroud)

或使用 map

val ResampledD = D map { x => D(util.Random.nextInt(D.length)) }
Run Code Online (Sandbox Code Playgroud)