1

我有一个样本数组 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)
4

1 回答 1

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)) }
于 2013-11-14T02:47:06.790 回答